Document And Entity Information
Document And Entity Information - shares | 9 Months Ended | |
Sep. 30, 2024 | Oct. 22, 2024 | |
Document Information [Line Items] | ||
Entity Central Index Key | 0001001385 | |
Entity Registrant Name | Northwest Pipe Co. | |
Amendment Flag | false | |
Current Fiscal Year End Date | --12-31 | |
Document Fiscal Period Focus | Q3 | |
Document Fiscal Year Focus | 2024 | |
Document Type | 10-Q | |
Document Quarterly Report | true | |
Document Period End Date | Sep. 30, 2024 | |
Document Transition Report | false | |
Entity File Number | 0-27140 | |
Entity Incorporation, State or Country Code | OR | |
Entity Tax Identification Number | 93-0557988 | |
Entity Address, Address Line One | 201 NE Park Plaza Drive, Suite 100 | |
Entity Address, City or Town | Vancouver | |
Entity Address, State or Province | WA | |
Entity Address, Postal Zip Code | 98684 | |
City Area Code | 360 | |
Local Phone Number | 397‑6250 | |
Title of 12(b) Security | Common Stock, par value $0.01 per share | |
Trading Symbol | NWPX | |
Security Exchange Name | NASDAQ | |
Entity Current Reporting Status | Yes | |
Entity Interactive Data Current | Yes | |
Entity Filer Category | Accelerated Filer | |
Entity Small Business | false | |
Entity Emerging Growth Company | false | |
Entity Shell Company | false | |
Entity Common Stock, Shares Outstanding | 9,918,711 |
Condensed Consolidated Statemen
Condensed Consolidated Statements of Operations (Unaudited) - USD ($) shares in Thousands, $ in Thousands | 3 Months Ended | 9 Months Ended | ||
Sep. 30, 2024 | Sep. 30, 2023 | Sep. 30, 2024 | Sep. 30, 2023 | |
Net sales | $ 130,201 | $ 118,722 | $ 372,921 | $ 334,191 |
Cost of sales | 103,182 | 99,428 | 299,954 | 275,839 |
Gross profit | 27,019 | 19,294 | 72,967 | 58,352 |
Selling, general, and administrative expense | 11,581 | 10,237 | 35,220 | 33,119 |
Operating income | 15,438 | 9,057 | 37,747 | 25,233 |
Other expense | (66) | (61) | (287) | (224) |
Interest expense | (1,452) | (1,162) | (4,749) | (3,722) |
Income before income taxes | 13,920 | 7,834 | 32,711 | 21,287 |
Income tax expense | 3,667 | 2,016 | 8,601 | 5,659 |
Net income | $ 10,253 | $ 5,818 | $ 24,110 | $ 15,628 |
us-gaap_EarningsPerShareAbstract | ||||
Basic (in dollars per share) | $ 1.03 | $ 0.58 | $ 2.43 | $ 1.57 |
Diluted (in dollars per share) | $ 1.02 | $ 0.58 | $ 2.4 | $ 1.55 |
Shares used in per share calculations: | ||||
Basic (in shares) | 9,919 | 10,014 | 9,915 | 9,985 |
Diluted (in shares) | 10,055 | 10,107 | 10,040 | 10,088 |
Condensed Consolidated Statem_2
Condensed Consolidated Statements of Comprehensive Income (Unaudited) - USD ($) $ in Thousands | 3 Months Ended | 9 Months Ended | ||
Sep. 30, 2024 | Sep. 30, 2023 | Sep. 30, 2024 | Sep. 30, 2023 | |
Net income | $ 10,253 | $ 5,818 | $ 24,110 | $ 15,628 |
Other comprehensive loss, net of tax: | ||||
Other comprehensive loss, net of tax | (238) | (27) | (196) | (162) |
Comprehensive income | 10,015 | 5,791 | 23,914 | 15,466 |
Foreign Exchange Forward [Member] | ||||
Other comprehensive loss, net of tax: | ||||
Unrealized gain (loss) on derivatives designated as cash flow hedges | 0 | 3 | 13 | (98) |
Interest Rate Swap [Member] | ||||
Other comprehensive loss, net of tax: | ||||
Unrealized gain (loss) on derivatives designated as cash flow hedges | (261) | (59) | (276) | (152) |
Pension Plan [Member] | ||||
Other comprehensive loss, net of tax: | ||||
Pension liability adjustment | $ 23 | $ 29 | $ 67 | $ 88 |
Condensed Consolidated Balance
Condensed Consolidated Balance Sheets (Current Period Unaudited) - USD ($) $ in Thousands | Sep. 30, 2024 | Dec. 31, 2023 |
Current assets: | ||
Cash and cash equivalents | $ 5,723 | $ 4,068 |
Trade and other receivables, net of allowance of $215 and $121 | 79,507 | 47,645 |
Contract assets | 120,983 | 120,516 |
Inventories | 84,977 | 91,229 |
Prepaid expenses and other | 2,530 | 9,026 |
Total current assets | 293,720 | 272,484 |
Property and equipment, less accumulated depreciation and amortization of $137,029 and $126,359 | 149,262 | 143,955 |
Operating lease right-of-use assets | 84,161 | 88,155 |
Goodwill | 55,504 | 55,504 |
Intangible assets, net | 28,050 | 31,074 |
Other assets | 6,493 | 6,709 |
Total assets | 617,190 | 597,881 |
Current liabilities: | ||
Current debt | 10,756 | 10,756 |
Accounts payable | 20,356 | 31,142 |
Accrued liabilities | 26,659 | 27,913 |
Contract liabilities | 28,897 | 21,450 |
Current portion of operating lease liabilities | 5,181 | 4,933 |
Total current liabilities | 91,849 | 96,194 |
Borrowings on line of credit | 60,704 | 54,485 |
Operating lease liabilities | 81,748 | 85,283 |
Deferred income taxes | 10,856 | 10,942 |
Other long-term liabilities | 9,673 | 10,617 |
Total liabilities | 254,830 | 257,521 |
Commitments and contingencies (Note 7) | ||
Stockholders’ equity: | ||
Preferred stock, $.01 par value, 10,000,000 shares authorized, none issued or outstanding | 0 | 0 |
Common stock, $.01 par value, 15,000,000 shares authorized, 9,918,711 and 9,985,580 shares issued and outstanding as of September 30, 2024 and December 31, 2023, respectively | 99 | 100 |
Additional paid-in-capital | 127,182 | 129,095 |
Retained earnings | 236,235 | 212,125 |
Accumulated other comprehensive loss | (1,156) | (960) |
Total stockholders’ equity | 362,360 | 340,360 |
Total liabilities and stockholders’ equity | $ 617,190 | $ 597,881 |
Condensed Consolidated Balanc_2
Condensed Consolidated Balance Sheets (Current Period Unaudited) (Parentheticals) - USD ($) $ in Thousands | Sep. 30, 2024 | Dec. 31, 2023 |
Allowance for doubtful accounts | $ 215 | $ 121 |
Accumulated depreciation and amortization | $ 137,029 | $ 126,359 |
Preferred stock, par value (in dollars per share) | $ 0.01 | $ 0.01 |
Preferred stock, shares authorized (in shares) | 10,000,000 | 10,000,000 |
Preferred stock, shares issued (in shares) | 0 | 0 |
Preferred stock, shares outstanding (in shares) | 0 | 0 |
Common stock, par value (in dollars per share) | $ 0.01 | $ 0.01 |
Common stock, shares authorized (in shares) | 15,000,000 | 15,000,000 |
Common stock, shares issued (in shares) | 9,918,711 | 9,985,580 |
Common stock, shares outstanding (in shares) | 9,918,711 | 9,985,580 |
Condensed Consolidated Statem_3
Condensed Consolidated Statements of Stockholders' Equity (Unaudited) - USD ($) $ in Thousands | Pension Plan [Member] Common Stock [Member] | Pension Plan [Member] Additional Paid-in Capital [Member] | Pension Plan [Member] Retained Earnings [Member] | Pension Plan [Member] AOCI Attributable to Parent [Member] | Pension Plan [Member] | Interest Rate Swap [Member] Common Stock [Member] | Interest Rate Swap [Member] Additional Paid-in Capital [Member] | Interest Rate Swap [Member] Retained Earnings [Member] | Interest Rate Swap [Member] AOCI Attributable to Parent [Member] | Interest Rate Swap [Member] | Foreign Exchange Forward [Member] Common Stock [Member] | Foreign Exchange Forward [Member] Additional Paid-in Capital [Member] | Foreign Exchange Forward [Member] Retained Earnings [Member] | Foreign Exchange Forward [Member] AOCI Attributable to Parent [Member] | Foreign Exchange Forward [Member] | Common Stock [Member] | Additional Paid-in Capital [Member] | Retained Earnings [Member] | AOCI Attributable to Parent [Member] | Total |
Balances (in shares) at Dec. 31, 2022 | 9,927,360 | |||||||||||||||||||
Balance at Dec. 31, 2022 | $ 99 | $ 127,911 | $ 191,053 | $ (789) | $ 318,274 | |||||||||||||||
Net income | 0 | 0 | 15,628 | 0 | 15,628 | |||||||||||||||
Pension liability adjustment, net of tax expense/benefit | $ 0 | $ 0 | $ 0 | $ 88 | $ 88 | |||||||||||||||
Unrealized gain (loss) on cash flow hedges, net of tax expense/benefit | $ 0 | $ 0 | $ 0 | $ (152) | $ (152) | $ 0 | $ 0 | $ 0 | $ (98) | $ (98) | ||||||||||
Share-based compensation expense | $ 0 | 3,050 | 0 | 0 | 3,050 | |||||||||||||||
Issuance of common stock under stock compensation plans, net of tax withholdings (in shares) | 86,836 | |||||||||||||||||||
Issuance of common stock under stock compensation plans, net of tax withholdings | (1,653) | (1,652) | ||||||||||||||||||
Balances (in shares) at Sep. 30, 2023 | 10,014,196 | |||||||||||||||||||
Balance at Sep. 30, 2023 | $ 100 | 129,308 | 206,681 | (951) | 335,138 | |||||||||||||||
Balances (in shares) at Jun. 30, 2023 | 10,014,196 | |||||||||||||||||||
Balance at Jun. 30, 2023 | $ 100 | 128,562 | 200,863 | (924) | 328,601 | |||||||||||||||
Net income | 0 | 0 | 5,818 | 0 | 5,818 | |||||||||||||||
Pension liability adjustment, net of tax expense/benefit | 0 | 0 | 0 | 29 | 29 | |||||||||||||||
Unrealized gain (loss) on cash flow hedges, net of tax expense/benefit | 0 | 0 | 0 | (59) | (59) | 0 | 0 | 0 | 3 | 3 | ||||||||||
Share-based compensation expense | $ 0 | 746 | 0 | 0 | 746 | |||||||||||||||
Balances (in shares) at Sep. 30, 2023 | 10,014,196 | |||||||||||||||||||
Balance at Sep. 30, 2023 | $ 100 | 129,308 | 206,681 | (951) | 335,138 | |||||||||||||||
Balances (in shares) at Dec. 31, 2023 | 9,985,580 | |||||||||||||||||||
Balance at Dec. 31, 2023 | $ 100 | 129,095 | 212,125 | (960) | 340,360 | |||||||||||||||
Net income | 0 | 0 | 24,110 | 0 | 24,110 | |||||||||||||||
Pension liability adjustment, net of tax expense/benefit | 0 | 0 | 0 | 67 | 67 | |||||||||||||||
Unrealized gain (loss) on cash flow hedges, net of tax expense/benefit | 0 | 0 | 0 | (276) | (276) | $ 0 | $ 0 | $ 0 | $ 13 | 13 | ||||||||||
Share-based compensation expense | $ 0 | 3,836 | 0 | 0 | 3,836 | |||||||||||||||
Issuance of common stock under stock compensation plans, net of tax withholdings (in shares) | 78,021 | |||||||||||||||||||
Issuance of common stock under stock compensation plans, net of tax withholdings | (1,449) | (1,449) | ||||||||||||||||||
Repurchase of common stock (in shares) | (144,890) | |||||||||||||||||||
Repurchase of common stock | $ (1) | (4,300) | 0 | 0 | (4,301) | |||||||||||||||
Balances (in shares) at Sep. 30, 2024 | 9,918,711 | |||||||||||||||||||
Balance at Sep. 30, 2024 | $ 99 | 127,182 | 236,235 | (1,156) | 362,360 | |||||||||||||||
Balances (in shares) at Jun. 30, 2024 | 9,918,711 | |||||||||||||||||||
Balance at Jun. 30, 2024 | $ 99 | 126,020 | 225,982 | (918) | 351,183 | |||||||||||||||
Net income | 0 | 0 | 10,253 | 0 | 10,253 | |||||||||||||||
Pension liability adjustment, net of tax expense/benefit | $ 0 | $ 0 | $ 0 | $ 23 | $ 23 | |||||||||||||||
Unrealized gain (loss) on cash flow hedges, net of tax expense/benefit | $ 0 | $ 0 | $ 0 | $ (261) | $ (261) | $ 0 | ||||||||||||||
Share-based compensation expense | $ 0 | 1,162 | 0 | 0 | 1,162 | |||||||||||||||
Balances (in shares) at Sep. 30, 2024 | 9,918,711 | |||||||||||||||||||
Balance at Sep. 30, 2024 | $ 99 | $ 127,182 | $ 236,235 | $ (1,156) | $ 362,360 |
Condensed Consolidated Statem_4
Condensed Consolidated Statements of Stockholders' Equity (Unaudited) (Parentheticals) - USD ($) $ in Thousands | 3 Months Ended | 9 Months Ended | ||
Sep. 30, 2024 | Sep. 30, 2023 | Sep. 30, 2024 | Sep. 30, 2023 | |
Pension Plan [Member] | ||||
Pension liability adjustment, tax expense/benefit | $ 0 | $ 0 | $ 0 | $ 0 |
Interest Rate Swap [Member] | ||||
Unrealized gain (loss) on cash flow hedges, tax expense/benefit | $ (84) | (19) | (89) | (53) |
Foreign Exchange Forward [Member] | ||||
Unrealized gain (loss) on cash flow hedges, tax expense/benefit | $ 1 | $ 12 | $ (34) |
Condensed Consolidated Statem_5
Condensed Consolidated Statements of Cash Flows (Unaudited) - USD ($) $ in Thousands | 9 Months Ended | |
Sep. 30, 2024 | Sep. 30, 2023 | |
Cash flows from operating activities: | ||
Net income | $ 24,110 | $ 15,628 |
Adjustments to reconcile net income to net cash provided by operating activities: | ||
Depreciation and finance lease amortization | 11,255 | 8,644 |
Amortization of intangible assets | 3,024 | 3,147 |
Deferred income taxes | (70) | 226 |
Share-based compensation expense | 3,836 | 3,050 |
Other, net | 539 | 1,298 |
Changes in operating assets and liabilities: | ||
Trade and other receivables | (32,267) | 4,401 |
Contract assets, net | 6,980 | 16,165 |
Inventories | 6,252 | (12,064) |
Prepaid expenses and other assets | 10,832 | 7,417 |
Accounts payable | (10,517) | 4,974 |
Accrued and other liabilities | (5,046) | (8,477) |
Net cash provided by operating activities | 18,928 | 44,409 |
Cash flows from investing activities: | ||
Purchases of property and equipment | (16,609) | (13,244) |
Payment of working capital adjustment in acquisition of business | 0 | (2,731) |
Other investing activities | 62 | 63 |
Net cash used in investing activities | (16,547) | (15,912) |
Cash flows from financing activities: | ||
Borrowings on line of credit | 142,883 | 113,047 |
Repayments on line of credit | (136,664) | (138,667) |
Payments on finance lease liabilities | (1,067) | (548) |
Tax withholdings related to net share settlements of equity awards | (1,449) | (1,652) |
Repurchase of common stock | (4,429) | 0 |
Other financing activities | 0 | (300) |
Net cash used in financing activities | (726) | (28,120) |
Change in cash and cash equivalents | 1,655 | 377 |
Cash and cash equivalents, beginning of period | 4,068 | 3,681 |
Cash and cash equivalents, end of period | 5,723 | 4,058 |
Noncash investing and financing activities: | ||
Accrued property and equipment purchases | 514 | 528 |
Right-of-use assets obtained in exchange for finance lease liabilities | 269 | 3,243 |
Right-of-use assets obtained in exchange for operating lease liabilities | $ 481 | $ 952 |
Note 1 - Organization and Basis
Note 1 - Organization and Basis of Presentation | 9 Months Ended |
Sep. 30, 2024 | |
Notes to Financial Statements | |
Organization, Consolidation and Presentation of Financial Statements Disclosure [Text Block] | 1. Organization and Basis of Presentation Northwest Pipe Company (collectively with its subsidiaries, the “Company”) is a leading manufacturer of water-related infrastructure products, and operates in two segments, Engineered Steel Pressure Pipe (“SPP”) and Precast Infrastructure and Engineered Systems (“Precast”). This segment presentation is consistent with how the Company’s chief operating decision maker, its Chief Executive Officer, evaluates the performance of the Company and makes decisions regarding the allocation of resources. See Note 12, In addition to being the largest manufacturer of engineered steel water pipeline systems in North America, the Company manufactures stormwater and wastewater technology products; high-quality precast and reinforced concrete products; pump lift stations; steel casing pipe, bar-wrapped concrete cylinder pipe, and one The Condensed Consolidated Financial Statements are expressed in United States Dollars and include the accounts of the Company and its subsidiaries over which the Company exercises control as of the financial statement date. Intercompany accounts and transactions have been eliminated. The accompanying unaudited interim Condensed Consolidated Financial Statements have been prepared in conformity with accounting principles generally accepted in the United States of America (“U.S. GAAP”) for interim financial information. The financial information as of December 31, 2023 10‑K December 31, 2023 2023 10‑K” 2023 10‑K. Operating results for the three nine September 30, 2024 not may December 31, 2024 |
Note 2 - Inventories
Note 2 - Inventories | 9 Months Ended |
Sep. 30, 2024 | |
Notes to Financial Statements | |
Inventory Disclosure [Text Block] | 2. Inventories Inventories consist of the following (in thousands): September 30, 2024 December 31, 2023 Raw materials $ 61,552 $ 68,110 Work-in-process 8,293 8,912 Finished goods 12,660 11,911 Supplies 2,472 2,296 Total inventories $ 84,977 $ 91,229 |
Note 3 - Fair Value Measurement
Note 3 - Fair Value Measurements | 9 Months Ended |
Sep. 30, 2024 | |
Notes to Financial Statements | |
Fair Value Disclosures [Text Block] | 3. Fair Value Measurements Fair value is defined as the price that would be received to sell an asset or paid to transfer a liability, in the principal or most advantageous market for the asset or liability, in an orderly transaction between market participants at the measurement date. The authoritative guidance establishes a fair value hierarchy that prioritizes the inputs to valuation techniques used to measure fair value into three 1 2 3 no The following table summarizes information regarding the Company’s financial assets and liabilities that are measured at fair value on a recurring basis (in thousands): Total Level 1 Level 2 Level 3 As of September 30, 2024 Financial assets: Deferred compensation plan $ 3,794 $ 3,307 $ 487 $ - Interest rate swaps 124 - 124 - Total financial assets $ 3,918 $ 3,307 $ 611 $ - Financial liabilities: Foreign currency forward contracts $ (6 ) $ - $ (6 ) $ - Interest rate swaps (163 ) - (163 ) - Total financial liabilities $ (169 ) $ - $ (169 ) $ - As of December 31, 2023 Financial assets: Deferred compensation plan $ 3,912 $ 3,391 $ 521 $ - Foreign currency forward contracts 42 - 42 - Interest rate swaps 326 - 326 - Total financial assets $ 4,280 $ 3,391 $ 889 $ - Financial liabilities: Foreign currency forward contracts $ (115 ) $ - $ (115 ) $ - The deferred compensation plan assets consist of cash and several publicly traded stock and bond mutual funds, valued using quoted market prices in active markets, classified as Level 1 2 The foreign currency forward contracts and interest rate swaps are derivatives valued using various pricing models or discounted cash flow analyses that incorporate observable market parameters, such as interest rate yield curves and currency rates, and are classified as Level 2 The net carrying amounts of cash and cash equivalents, trade and other receivables, accounts payable, accrued liabilities, and current debt approximate fair value due to the short-term nature of these instruments. The net carrying amount of the borrowings on the line of credit approximates fair value due to its variable interest rate based on market. |
Note 4 - Derivative Instruments
Note 4 - Derivative Instruments and Hedging Activities | 9 Months Ended |
Sep. 30, 2024 | |
Notes to Financial Statements | |
Derivative Instruments and Hedging Activities Disclosure [Text Block] | 4. Derivative Instruments and Hedging Activities In the normal course of business, the Company is exposed to interest rate and foreign currency exchange rate fluctuations. Consistent with the Company’s strategy for financial risk management, the Company has established a program that utilizes foreign currency forward contracts and interest rate swaps to offset the risks associated with the effects of these exposures. For each derivative entered into in which the Company seeks to obtain cash flow hedge accounting treatment, the Company formally documents all relationships between hedging instruments and hedged items, as well as its risk management objective and strategy for undertaking the hedge transaction, the nature of the risk being hedged, how the hedging instrument’s effectiveness in offsetting the hedged risk will be assessed prospectively and retrospectively, and a description of the method of measuring ineffectiveness. This process includes linking all derivatives to specific firm commitments or forecasted transactions and designating the derivatives as cash flow hedges. The Company also formally assesses, both at the hedge’s inception and on an ongoing basis, whether the derivatives that are used in hedging transactions are highly effective in offsetting changes in cash flows of hedged items. The effective portion of these hedged items is reflected in Unrealized gain (loss) on cash flow hedges on the Condensed Consolidated Statements of Comprehensive Income. If it is determined that a derivative is not As of September 30, 2024 CAD$3.0 EUR€1.1 CAD$2.1 EUR€1.1 not December 31, 2023 CAD$6.7 EUR€1.1 CAD$6.4 EUR€1.1 not September 30, 2024 April 2025 The Company has entered into interest rate swaps which effectively convert a portion of its variable-rate debt to fixed-rate debt and are designated as cash flow hedges. For the first December 31, 2023 zero April 2024 second April 3, 2023, 30 September 30, 2024 December 31, 2023 zero April 2028 third June 30, 2024, September 30, 2024 December 2024, June 2025. The following table summarizes the gains (losses) recognized on derivatives in the Condensed Consolidated Financial Statements (in thousands): Three Months Ended September 30, Nine Months Ended September 30, 2024 2023 2024 2023 Foreign currency forward contracts: Net sales $ (21 ) $ 77 $ 90 $ (601 ) Property and equipment 41 (22 ) 41 (109 ) Interest rate swaps: Interest expense 88 201 285 553 Total $ 108 $ 256 $ 416 $ (157 ) As of September 30, 2024 10, |
Note 5 - Stockholders' Equity
Note 5 - Stockholders' Equity | 9 Months Ended |
Sep. 30, 2024 | |
Notes to Financial Statements | |
Equity [Text Block] | 5. Stockholders’ Equity Share Repurchase Program On November 2, 2023, not may may 10b5‑1 1934, 10b5‑1 November 2023, During the nine September 30, 2024 three September 30, 2024 three nine September 30, 2023 September 30, 2024 |
Note 6 - Share-based Compensati
Note 6 - Share-based Compensation | 9 Months Ended |
Sep. 30, 2024 | |
Notes to Financial Statements | |
Share-Based Payment Arrangement [Text Block] | 6. Share-based Compensation The Company has one active stock incentive plan for employees and directors, the 2022 one 2007 April 1, 2024. The Company recognizes the compensation cost of employee and director services received in exchange for awards of equity instruments based on the grant date estimated fair value of the awards. The Company estimates the fair value of RSUs and PSAs using the value of the Company’s stock on the date of grant. Share-based compensation cost is recognized over the period during which the employee or director is required to provide service in exchange for the award and, as forfeitures occur, the associated compensation cost recognized to date is reversed. For awards with performance-based payout conditions, the Company recognizes compensation cost based on the probability of achieving the performance conditions, with changes in expectations recognized as an adjustment to earnings in the period of change. Any recognized compensation cost is reversed if the conditions are ultimately not The following table summarizes share-based compensation expense recorded (in thousands): Three Months Ended September 30, Nine Months Ended September 30, 2024 2023 2024 2023 Cost of sales $ 387 $ 275 $ 1,102 $ 816 Selling, general, and administrative expense 775 471 2,734 2,234 Total $ 1,162 $ 746 $ 3,836 $ 3,050 Restricted Stock Units and Performance Share Awards The Company’s stock incentive plan provides for equity instruments, such as RSUs and PSAs, which grant the right to receive a specified number of shares at specified times. RSUs and PSAs are service-based awards that vest according to the terms of the grant. PSAs have performance-based payout conditions. The following table summarizes the Company’s RSU and PSA activity: Number of RSUs and PSAs (1) Weighted-Average Grant Date Fair Value Unvested RSUs and PSAs as of December 31, 2023 226,391 $ 29.66 RSUs and PSAs granted 120,143 34.68 Unvested RSUs and PSAs canceled (3,197 ) 29.15 RSUs and PSAs vested (2) (103,266 ) 30.35 Unvested RSUs and PSAs as of September 30, 2024 240,071 31.89 ( 1 The number of PSAs disclosed in this table are at the target level of 100%. ( 2 For the PSAs vested on April 1, 2024, 2021 2023 2022 2023 2023 The unvested balance of RSUs and PSAs as of September 30, 2024 Based on the estimated level of achievement of the performance targets associated with the PSAs as of September 30, 2024 Stock Awards For the nine September 30, 2024 2023 2024 2023 |
Note 7 - Commitments and Contin
Note 7 - Commitments and Contingencies | 9 Months Ended |
Sep. 30, 2024 | |
Notes to Financial Statements | |
Commitments and Contingencies Disclosure [Text Block] | 7. Commitments and Contingencies Portland Harbor Superfund Site In 2000, not 2000, 2016, 2016, 2017, not no The ODEQ is separately providing oversight of voluntary investigations and source control activities by the Company involving the Company’s site, which are focused on controlling any current “uplands” releases of contaminants into the Willamette River. No not Concurrent with the activities of the EPA and the ODEQ, the Portland Harbor Natural Resources Trustee Council (“Trustees”) sent some or all of the same parties, including the Company, a notice of intent to perform a Natural Resource Damage Assessment (“NRDA”) for the Portland Harbor Superfund Site to determine the nature and extent of natural resource damages under CERCLA Section 107. three one 2014, not In 2017, 2009, 2025, not The Company has insurance policies for defense costs, as well as indemnification policies it believes will provide reimbursement for the remediation assessed. However, the Company can provide no may All Sites The Company operates its facilities under numerous governmental permits and licenses relating to air emissions, stormwater runoff, and other environmental matters. The Company’s operations are also governed by many other laws and regulations, including those relating to workplace safety and worker health, principally the Occupational Safety and Health Act and regulations thereunder which, among other requirements, establish noise and dust standards. The Company believes it is in material compliance with its permits and licenses and these laws and regulations, and the Company does not Other Contingencies and Legal Proceedings From time to time, the Company is party to a variety of legal actions, including claims, suits, complaints, and investigations arising out of the ordinary course of its business. The Company maintains insurance coverage against potential claims in amounts that are believed to be adequate. To the extent that insurance does not not Commitments As of September 30, 2024 September 30, 2024 Guarantees The Company has entered into certain letters of credit that total $1.6 million as of September 30, 2024 |
Note 8 - Revenue
Note 8 - Revenue | 9 Months Ended |
Sep. 30, 2024 | |
Notes to Financial Statements | |
Revenue from Contract with Customer [Text Block] | 8. Revenue The Company manufactures water infrastructure steel pipe products, which are generally made to custom specifications for installation contractors serving projects funded by public water agencies, as well as precast and reinforced concrete products. Generally, each of the Company’s contracts with its customers contains a single performance obligation, as the promise to transfer products is not not not SPP revenue for water infrastructure steel pipe products is recognized over time as the manufacturing process progresses because of the Company’s right to payment for work performed to date plus a reasonable profit on cancellations for unique products that have no may Net revisions in contract estimates resulted in an increase (decrease) in SPP net sales of $0.8 million and $3.1 million for the three nine September 30, 2024 three nine September 30, 2023 Precast revenue for water infrastructure concrete pipe and precast concrete products is recognized at the time control is transferred to customers which is generally at the time of shipment, in an amount that reflects the consideration the Company expects to be entitled to in exchange for the products. All variable consideration that may not Disaggregation of Revenue The following table disaggregates revenue by recognition over time or at a point in time, as the Company believes it best depicts how the nature, amount, timing, and uncertainty of its revenue and cash flows are affected by economic factors (in thousands): Three Months Ended September 30, Nine Months Ended September 30, 2024 2023 2024 2023 Over time $ 85,924 $ 80,493 $ 255,454 $ 221,294 Point in time 44,277 38,229 117,467 112,897 Net sales $ 130,201 $ 118,722 $ 372,921 $ 334,191 Contract Assets and Contract Liabilities Contract assets primarily represent revenue earned over time but not 30 The difference between the opening and closing balances of the Company’s contract assets and contract liabilities primarily results from the timing difference between the Company’s performance and billings. The following is a summary of the changes in contract assets (in thousands): Nine Months Ended September 30, 2024 2023 Balance, beginning of period $ 120,516 $ 121,778 Revenue recognized in advance of billings 220,632 192,558 Billings (220,060 ) (207,436 ) Other (105 ) (1,480 ) Balance, end of period $ 120,983 $ 105,420 The following is a summary of the changes in contract liabilities (in thousands): Nine Months Ended September 30, 2024 2023 Balance, beginning of period $ 21,450 $ 17,456 Billings 42,333 28,544 Revenue recognized (34,822 ) (28,736 ) Other (64 ) - Balance, end of period $ 28,897 $ 17,264 Backlog Backlog represents the balance of remaining performance obligations under signed contracts for SPP water infrastructure steel pipe products for which revenue is recognized over time. As of September 30, 2024 2024 2025 |
Note 9 - Income Taxes
Note 9 - Income Taxes | 9 Months Ended |
Sep. 30, 2024 | |
Notes to Financial Statements | |
Income Tax Disclosure [Text Block] | 9. Income Taxes The Company files income tax returns in the United States Federal jurisdiction, in a limited number of foreign jurisdictions, and in many state jurisdictions. With few exceptions, the Company is no 2020. The Company recorded income tax expense at an estimated effective income tax rate of 26.3% and 26.3% for the three nine September 30, 2024 three nine September 30, 2023 three nine September 30, 2024 2023 |
Note 10 - Accumulated Other Com
Note 10 - Accumulated Other Comprehensive Loss | 9 Months Ended |
Sep. 30, 2024 | |
Notes to Financial Statements | |
Comprehensive Income (Loss) Note [Text Block] | 10. Accumulated Other Comprehensive Loss The following tables summarize changes in the components of Accumulated other comprehensive loss (in thousands). All amounts are net of income tax: Pension Liability Adjustment Unrealized Loss on Foreign Currency Forward Contracts Designated as Cash Flow Hedges Unrealized Gain (Loss) on Interest Rate Swaps Designated as Cash Flow Hedges Total Balances, December 31, 2023 $ (1,193 ) $ (13 ) $ 246 $ (960 ) Other comprehensive income (loss) before reclassifications 57 11 (60 ) 8 Amounts reclassified from Accumulated other comprehensive loss 10 2 (216 ) (204 ) Net current period other comprehensive income (loss) 67 13 (276 ) (196 ) Balances, September 30, 2024 $ (1,126 ) $ - $ (30 ) $ (1,156 ) Pension Liability Adjustment Unrealized Gain (Loss) on Foreign Currency Forward Contracts Designated as Cash Flow Hedges Unrealized Gain on Interest Rate Swaps Designated as Cash Flow Hedges Total Balances, December 31, 2022 $ (1,532 ) $ 94 $ 649 $ (789 ) Other comprehensive income (loss) before reclassifications 78 (115 ) 266 229 Amounts reclassified from Accumulated other comprehensive loss 10 17 (418 ) (391 ) Net current period other comprehensive income (loss) 88 (98 ) (152 ) (162 ) Balances, September 30, 2023 $ (1,444 ) $ (4 ) $ 497 $ (951 ) The following table provides additional detail about Accumulated other comprehensive loss components that were reclassified to the Condensed Consolidated Statements of Operations (in thousands): Amount reclassified from Affected line item in Accumulated Other Comprehensive Loss the Condensed Three Months Ended Nine Months Ended Consolidated Details about Accumulated Other September 30, September 30, Statements of Comprehensive Loss Components 2024 2023 2024 2023 Operations Pension liability adjustment: Net periodic pension cost: Service cost $ (4 ) $ (4 ) $ (10 ) $ (10 ) Cost of sales (4 ) (4 ) (10 ) (10 ) Net of tax Unrealized gain (loss) on foreign currency forward contracts: Gain (loss) on cash flow hedges - 10 (3 ) 87 Net sales Loss on cash flow hedges - (22 ) - (109 ) Property and equipment Associated income tax benefit - 3 1 5 Income tax expense - (9 ) (2 ) (17 ) Net of tax Unrealized gain on interest rate swaps: Gain on cash flow hedges 88 201 285 553 Interest expense Associated income tax expense (21 ) (49 ) (69 ) (135 ) Income tax expense 67 152 216 418 Net of tax Total reclassifications for the period $ 63 $ 139 $ 204 $ 391 |
Note 11 - Net Income Per Share
Note 11 - Net Income Per Share | 9 Months Ended |
Sep. 30, 2024 | |
Notes to Financial Statements | |
Earnings Per Share [Text Block] | 11. Net Income per Share Basic net income per share is computed by dividing the net income by the weighted-average number of shares of common stock outstanding during the period. Diluted net income per share is computed by giving effect to all dilutive potential shares of common stock, including RSUs and PSAs, assumed to be outstanding during the period using the treasury stock method. Performance-based PSAs are considered dilutive when the related performance conditions have been met assuming the end of the reporting period represents the end of the performance period. In periods with a net loss, all potential shares of common stock are excluded from the computation of diluted net loss per share as the impact would be antidilutive. Net income per basic and diluted weighted-average common share outstanding was calculated as follows (in thousands, except per share amounts): Three Months Ended September 30, Nine Months Ended September 30, 2024 2023 2024 2023 Net income $ 10,253 $ 5,818 $ 24,110 $ 15,628 Basic weighted-average common shares outstanding 9,919 10,014 9,915 9,985 Effect of potentially dilutive common shares 136 93 125 103 Diluted weighted-average common shares outstanding 10,055 10,107 10,040 10,088 Net income per common share: Basic $ 1.03 $ 0.58 $ 2.43 $ 1.57 Diluted $ 1.02 $ 0.58 $ 2.40 $ 1.55 |
Note 12 - Segment Information
Note 12 - Segment Information | 9 Months Ended |
Sep. 30, 2024 | |
Notes to Financial Statements | |
Segment Reporting Disclosure [Text Block] | 12. Segment Information The operating segments reported below are based on the nature of the products sold and the manufacturing process used by the Company and are the segments of the Company for which separate financial information is available and for which operating results are regularly evaluated by the Company’s chief operating decision maker, its Chief Executive Officer, to make decisions about resources to be allocated to the segment and assess its performance. Management evaluates segment performance based on gross profit. The Company does not The Company’s Engineered Steel Pressure Pipe (SPP) segment manufactures large-diameter, high-pressure steel pipeline systems for use in water infrastructure applications, which are primarily related to drinking water systems. These products are also used for hydroelectric power systems, wastewater systems, seismic resiliency, and other applications. In addition, SPP makes products for industrial plant piping systems and certain structural applications. SPP has manufacturing facilities located in Portland, Oregon; Adelanto and Tracy, California; Parkersburg, West Virginia; Saginaw, Texas; St. Louis, Missouri; and San Luis Río Colorado, Mexico. The Company’s Precast Infrastructure and Engineered Systems (Precast) segment manufactures stormwater and wastewater technology products, high-quality precast and reinforced concrete products, including reinforced concrete pipe, manholes, box culverts, vaults, and catch basins, pump lift stations, oil water separators, biofiltration units, and other environmental and engineered solutions. Precast has manufacturing facilities located in Dallas, Houston, and San Antonio, Texas; and Orem, Salt Lake City, and St. George, Utah. The following table disaggregates revenue and gross profit based on the Company’s reportable segments (in thousands): Three Months Ended September 30, Nine Months Ended September 30, 2024 2023 2024 2023 Net sales: Engineered Steel Pressure Pipe $ 85,924 $ 80,493 $ 255,454 $ 221,294 Precast Infrastructure and Engineered Systems 44,277 38,229 117,467 112,897 Total net sales $ 130,201 $ 118,722 $ 372,921 $ 334,191 Gross profit: Engineered Steel Pressure Pipe $ 16,628 $ 10,911 $ 47,851 $ 31,264 Precast Infrastructure and Engineered Systems 10,391 8,383 25,116 27,088 Total gross profit $ 27,019 $ 19,294 $ 72,967 $ 58,352 |
Note 13 - Recent Accounting and
Note 13 - Recent Accounting and Reporting Developments | 9 Months Ended |
Sep. 30, 2024 | |
Notes to Financial Statements | |
Accounting Standards Update and Change in Accounting Principle [Text Block] | 13. Recent Accounting and Reporting Developments There have been no 2023 10‑K, Accounting Changes In March 2023, No. 2023‑01 842 2023‑01” 1 2 no 2023‑01 January 1, 2024 not Recent Accounting Standards In November 2023, No. 2023‑07, 280 2023‑07” 2023‑07 2024 2025, not In December 2023, No. 2023‑09, 740 2023‑09” 2023‑09 2025 2023‑09 not |
Note 14 - Subsequent Event
Note 14 - Subsequent Event | 9 Months Ended |
Sep. 30, 2024 | |
Notes to Financial Statements | |
Subsequent Events [Text Block] | 14. Subsequent Event Long-Term Debt On October 28, 2024, August 2, 2022 January 23, 2023, March 15, 2023, July 21, 2023, November 2, 2023 October 28, 2029, SOFR may first 30 |
Insider Trading Arrangements
Insider Trading Arrangements | 3 Months Ended |
Sep. 30, 2024 shares | |
Insider Trading Arr Line Items | |
Non-Rule 10b5-1 Arrangement Adopted [Flag] | false |
Trading Arrangement, Securities Aggregate Available Amount | 2,500 |
Rule 10b5-1 Arrangement Terminated [Flag] | false |
Non-Rule 10b5-1 Arrangement Terminated [Flag] | false |
Trading Arrangement Adoption Date | August 19, 2024 |
Trading Arrangement, Individual Name | Aaron Wilkins |
Trading Arrangement, Individual Title | Senior Vice President, Chief Financial Officer, and Corporate Secretary |
Rule 10b5-1 Arrangement Adopted [Flag] | true |
Note 2 - Inventories (Tables)
Note 2 - Inventories (Tables) | 9 Months Ended |
Sep. 30, 2024 | |
Notes Tables | |
Schedule Of Inventory Current And Non Current [Table Text Block] | September 30, 2024 December 31, 2023 Raw materials $ 61,552 $ 68,110 Work-in-process 8,293 8,912 Finished goods 12,660 11,911 Supplies 2,472 2,296 Total inventories $ 84,977 $ 91,229 |
Note 3 - Fair Value Measureme_2
Note 3 - Fair Value Measurements (Tables) | 9 Months Ended |
Sep. 30, 2024 | |
Notes Tables | |
Schedule of Fair Value, Assets and Liabilities Measured on Recurring Basis [Table Text Block] | Total Level 1 Level 2 Level 3 As of September 30, 2024 Financial assets: Deferred compensation plan $ 3,794 $ 3,307 $ 487 $ - Interest rate swaps 124 - 124 - Total financial assets $ 3,918 $ 3,307 $ 611 $ - Financial liabilities: Foreign currency forward contracts $ (6 ) $ - $ (6 ) $ - Interest rate swaps (163 ) - (163 ) - Total financial liabilities $ (169 ) $ - $ (169 ) $ - As of December 31, 2023 Financial assets: Deferred compensation plan $ 3,912 $ 3,391 $ 521 $ - Foreign currency forward contracts 42 - 42 - Interest rate swaps 326 - 326 - Total financial assets $ 4,280 $ 3,391 $ 889 $ - Financial liabilities: Foreign currency forward contracts $ (115 ) $ - $ (115 ) $ - |
Note 4 - Derivative Instrumen_2
Note 4 - Derivative Instruments and Hedging Activities (Tables) | 9 Months Ended |
Sep. 30, 2024 | |
Notes Tables | |
Derivative Instruments, Gain (Loss) [Table Text Block] | Three Months Ended September 30, Nine Months Ended September 30, 2024 2023 2024 2023 Foreign currency forward contracts: Net sales $ (21 ) $ 77 $ 90 $ (601 ) Property and equipment 41 (22 ) 41 (109 ) Interest rate swaps: Interest expense 88 201 285 553 Total $ 108 $ 256 $ 416 $ (157 ) |
Note 6 - Share-based Compensa_2
Note 6 - Share-based Compensation (Tables) | 9 Months Ended |
Sep. 30, 2024 | |
Notes Tables | |
Share-Based Payment Arrangement, Expensed and Capitalized, Amount [Table Text Block] | Three Months Ended September 30, Nine Months Ended September 30, 2024 2023 2024 2023 Cost of sales $ 387 $ 275 $ 1,102 $ 816 Selling, general, and administrative expense 775 471 2,734 2,234 Total $ 1,162 $ 746 $ 3,836 $ 3,050 |
Schedule of Unvested Restricted Stock Units and Performance Share Awards Activity [Table Text Block] | Number of RSUs and PSAs (1) Weighted-Average Grant Date Fair Value Unvested RSUs and PSAs as of December 31, 2023 226,391 $ 29.66 RSUs and PSAs granted 120,143 34.68 Unvested RSUs and PSAs canceled (3,197 ) 29.15 RSUs and PSAs vested (2) (103,266 ) 30.35 Unvested RSUs and PSAs as of September 30, 2024 240,071 31.89 |
Note 8 - Revenue (Tables)
Note 8 - Revenue (Tables) | 9 Months Ended |
Sep. 30, 2024 | |
Notes Tables | |
Disaggregation of Revenue [Table Text Block] | Three Months Ended September 30, Nine Months Ended September 30, 2024 2023 2024 2023 Over time $ 85,924 $ 80,493 $ 255,454 $ 221,294 Point in time 44,277 38,229 117,467 112,897 Net sales $ 130,201 $ 118,722 $ 372,921 $ 334,191 |
Contract with Customer, Contract Asset, Contract Liability, and Receivable [Table Text Block] | Nine Months Ended September 30, 2024 2023 Balance, beginning of period $ 120,516 $ 121,778 Revenue recognized in advance of billings 220,632 192,558 Billings (220,060 ) (207,436 ) Other (105 ) (1,480 ) Balance, end of period $ 120,983 $ 105,420 Nine Months Ended September 30, 2024 2023 Balance, beginning of period $ 21,450 $ 17,456 Billings 42,333 28,544 Revenue recognized (34,822 ) (28,736 ) Other (64 ) - Balance, end of period $ 28,897 $ 17,264 |
Note 10 - Accumulated Other C_2
Note 10 - Accumulated Other Comprehensive Loss (Tables) | 9 Months Ended |
Sep. 30, 2024 | |
Notes Tables | |
Schedule of Changes in Accumulated Other Comprehensive Income Loss [Table Text Block] | Pension Liability Adjustment Unrealized Loss on Foreign Currency Forward Contracts Designated as Cash Flow Hedges Unrealized Gain (Loss) on Interest Rate Swaps Designated as Cash Flow Hedges Total Balances, December 31, 2023 $ (1,193 ) $ (13 ) $ 246 $ (960 ) Other comprehensive income (loss) before reclassifications 57 11 (60 ) 8 Amounts reclassified from Accumulated other comprehensive loss 10 2 (216 ) (204 ) Net current period other comprehensive income (loss) 67 13 (276 ) (196 ) Balances, September 30, 2024 $ (1,126 ) $ - $ (30 ) $ (1,156 ) Pension Liability Adjustment Unrealized Gain (Loss) on Foreign Currency Forward Contracts Designated as Cash Flow Hedges Unrealized Gain on Interest Rate Swaps Designated as Cash Flow Hedges Total Balances, December 31, 2022 $ (1,532 ) $ 94 $ 649 $ (789 ) Other comprehensive income (loss) before reclassifications 78 (115 ) 266 229 Amounts reclassified from Accumulated other comprehensive loss 10 17 (418 ) (391 ) Net current period other comprehensive income (loss) 88 (98 ) (152 ) (162 ) Balances, September 30, 2023 $ (1,444 ) $ (4 ) $ 497 $ (951 ) |
Reclassification out of Accumulated Other Comprehensive Income [Table Text Block] | Amount reclassified from Affected line item in Accumulated Other Comprehensive Loss the Condensed Three Months Ended Nine Months Ended Consolidated Details about Accumulated Other September 30, September 30, Statements of Comprehensive Loss Components 2024 2023 2024 2023 Operations Pension liability adjustment: Net periodic pension cost: Service cost $ (4 ) $ (4 ) $ (10 ) $ (10 ) Cost of sales (4 ) (4 ) (10 ) (10 ) Net of tax Unrealized gain (loss) on foreign currency forward contracts: Gain (loss) on cash flow hedges - 10 (3 ) 87 Net sales Loss on cash flow hedges - (22 ) - (109 ) Property and equipment Associated income tax benefit - 3 1 5 Income tax expense - (9 ) (2 ) (17 ) Net of tax Unrealized gain on interest rate swaps: Gain on cash flow hedges 88 201 285 553 Interest expense Associated income tax expense (21 ) (49 ) (69 ) (135 ) Income tax expense 67 152 216 418 Net of tax Total reclassifications for the period $ 63 $ 139 $ 204 $ 391 |
Note 11 - Net Income Per Share
Note 11 - Net Income Per Share (Tables) | 9 Months Ended |
Sep. 30, 2024 | |
Notes Tables | |
Schedule of Earnings Per Share, Basic and Diluted [Table Text Block] | Three Months Ended September 30, Nine Months Ended September 30, 2024 2023 2024 2023 Net income $ 10,253 $ 5,818 $ 24,110 $ 15,628 Basic weighted-average common shares outstanding 9,919 10,014 9,915 9,985 Effect of potentially dilutive common shares 136 93 125 103 Diluted weighted-average common shares outstanding 10,055 10,107 10,040 10,088 Net income per common share: Basic $ 1.03 $ 0.58 $ 2.43 $ 1.57 Diluted $ 1.02 $ 0.58 $ 2.40 $ 1.55 |
Note 12 - Segment Information (
Note 12 - Segment Information (Tables) | 9 Months Ended |
Sep. 30, 2024 | |
Notes Tables | |
Schedule of Segment Reporting Information, by Segment [Table Text Block] | Three Months Ended September 30, Nine Months Ended September 30, 2024 2023 2024 2023 Net sales: Engineered Steel Pressure Pipe $ 85,924 $ 80,493 $ 255,454 $ 221,294 Precast Infrastructure and Engineered Systems 44,277 38,229 117,467 112,897 Total net sales $ 130,201 $ 118,722 $ 372,921 $ 334,191 Gross profit: Engineered Steel Pressure Pipe $ 16,628 $ 10,911 $ 47,851 $ 31,264 Precast Infrastructure and Engineered Systems 10,391 8,383 25,116 27,088 Total gross profit $ 27,019 $ 19,294 $ 72,967 $ 58,352 |
Note 1 - Organization and Bas_2
Note 1 - Organization and Basis of Presentation (Details Textual) | 9 Months Ended |
Sep. 30, 2024 | |
Number of Operating Segments | 2 |
Number of Manufacturing Facilities | 13 |
Note 2 - Inventories - Componen
Note 2 - Inventories - Components of Inventories (Details) - USD ($) $ in Thousands | Sep. 30, 2024 | Dec. 31, 2023 |
Raw materials | $ 61,552 | $ 68,110 |
Work-in-process | 8,293 | 8,912 |
Finished goods | 12,660 | 11,911 |
Supplies | 2,472 | 2,296 |
Total inventories | $ 84,977 | $ 91,229 |
Note 3 - Fair Value Measureme_3
Note 3 - Fair Value Measurements - Assets and Liabilities Measured at Fair Value on Recurring Basis (Details) - Fair Value, Recurring [Member] - USD ($) $ in Thousands | Sep. 30, 2024 | Dec. 31, 2023 |
Total financial assets | $ 3,918 | $ 4,280 |
Total financial liabilities | (169) | |
Fair Value, Inputs, Level 1 [Member] | ||
Total financial assets | 3,307 | 3,391 |
Total financial liabilities | 0 | |
Fair Value, Inputs, Level 2 [Member] | ||
Total financial assets | 611 | 889 |
Total financial liabilities | (169) | |
Fair Value, Inputs, Level 3 [Member] | ||
Total financial assets | 0 | 0 |
Total financial liabilities | 0 | |
Deferred Compensation Plan [Member] | ||
Deferred compensation plan | 3,794 | 3,912 |
Deferred Compensation Plan [Member] | Fair Value, Inputs, Level 1 [Member] | ||
Deferred compensation plan | 3,307 | 3,391 |
Deferred Compensation Plan [Member] | Fair Value, Inputs, Level 2 [Member] | ||
Deferred compensation plan | 487 | 521 |
Deferred Compensation Plan [Member] | Fair Value, Inputs, Level 3 [Member] | ||
Deferred compensation plan | 0 | 0 |
Interest Rate Swap [Member] | ||
Derivative assets | 124 | 326 |
Derivative liabilities | (163) | |
Interest Rate Swap [Member] | Fair Value, Inputs, Level 1 [Member] | ||
Derivative assets | 0 | 0 |
Derivative liabilities | 0 | |
Interest Rate Swap [Member] | Fair Value, Inputs, Level 2 [Member] | ||
Derivative assets | 124 | 326 |
Derivative liabilities | (163) | |
Interest Rate Swap [Member] | Fair Value, Inputs, Level 3 [Member] | ||
Derivative assets | 0 | 0 |
Derivative liabilities | 0 | |
Foreign Exchange Forward [Member] | ||
Derivative assets | 42 | |
Derivative liabilities | (6) | (115) |
Foreign Exchange Forward [Member] | Fair Value, Inputs, Level 1 [Member] | ||
Derivative assets | 0 | |
Derivative liabilities | 0 | 0 |
Foreign Exchange Forward [Member] | Fair Value, Inputs, Level 2 [Member] | ||
Derivative assets | 42 | |
Derivative liabilities | (6) | (115) |
Foreign Exchange Forward [Member] | Fair Value, Inputs, Level 3 [Member] | ||
Derivative assets | 0 | |
Derivative liabilities | $ 0 | $ 0 |
Note 4 - Derivative Instrumen_3
Note 4 - Derivative Instruments and Hedging Activities (Details Textual) $ in Thousands, € in Millions, $ in Millions | 9 Months Ended | |||||||
Sep. 30, 2024 USD ($) | Dec. 31, 2024 USD ($) | Sep. 30, 2024 CAD ($) | Sep. 30, 2024 EUR (€) | Dec. 31, 2023 USD ($) | Dec. 31, 2023 CAD ($) | Dec. 31, 2023 EUR (€) | Apr. 03, 2023 | |
Other Comprehensive Income (Loss), Cash Flow Hedge, Gain (Loss), before Reclassification and Tax | $ 0 | |||||||
The 1.941% Interest Rate Swap [Member] | Cash Flow Hedging [Member] | ||||||||
Derivative, Notional Amount | $ 6,700 | |||||||
Derivative, Fixed Interest Rate | 1.941% | 1.941% | 1.941% | |||||
The 2.96% Interest Rate Swap [Member] | Cash Flow Hedging [Member] | ||||||||
Derivative, Notional Amount | $ 10,800 | 13,000 | ||||||
Derivative, Fixed Interest Rate | 2.96% | |||||||
The 5.10% Interest Rate Swap [Member] | Cash Flow Hedging [Member] | ||||||||
Derivative, Notional Amount | $ 28,000 | |||||||
Derivative, Fixed Interest Rate | 5.10% | 5.10% | 5.10% | |||||
The 5.10% Interest Rate Swap [Member] | Cash Flow Hedging [Member] | Forecast [Member] | ||||||||
Derivative, Notional Amount | $ 20,000 | |||||||
Designated as Hedging Instrument [Member] | Foreign Exchange Forward [Member] | ||||||||
Derivative, Notional Amount | $ 2,200 | $ 3 | 5,100 | $ 6.7 | ||||
Designated as Hedging Instrument [Member] | Foreign Exchange Forward 1 [Member] | ||||||||
Derivative, Notional Amount | 1,200 | € 1.1 | 1,200 | € 1.1 | ||||
Not Designated as Hedging Instrument [Member] | Foreign Exchange Forward [Member] | ||||||||
Derivative, Notional Amount | 1,500 | $ 2.1 | 4,900 | $ 6.4 | ||||
Not Designated as Hedging Instrument [Member] | Foreign Exchange Forward 1 [Member] | ||||||||
Derivative, Notional Amount | $ 1,200 | € 1.1 | $ 1,200 | € 1.1 |
Note 4 - Derivative Instrumen_4
Note 4 - Derivative Instruments and Hedging Activities - Summary of Gains (Losses) (Details) - Not Designated as Hedging Instrument [Member] - USD ($) $ in Thousands | 3 Months Ended | 9 Months Ended | ||
Sep. 30, 2024 | Sep. 30, 2023 | Sep. 30, 2024 | Sep. 30, 2023 | |
Gains (losses) recognized on derivatives | $ 108 | $ 256 | $ 416 | $ (157) |
Foreign Exchange Forward [Member] | Sales [Member] | ||||
Gains (losses) recognized on derivatives | (21) | 77 | 90 | (601) |
Foreign Exchange Forward [Member] | Property and Equipment [Member] | ||||
Gains (losses) recognized on derivatives | 41 | (22) | 41 | (109) |
Interest Rate Swap [Member] | Interest Expense [Member] | ||||
Gains (losses) recognized on derivatives | $ 88 | $ 201 | $ 285 | $ 553 |
Note 5 - Stockholders' Equity (
Note 5 - Stockholders' Equity (Details Textual) - USD ($) $ in Thousands | 3 Months Ended | 9 Months Ended | ||||
Sep. 30, 2024 | Sep. 30, 2023 | Sep. 30, 2024 | Sep. 30, 2023 | Dec. 01, 2023 | Nov. 02, 2023 | |
Stock Repurchased and Retired During Period, Value | $ 4,301 | |||||
Share Repurchase Program [Member] | ||||||
Stock Repurchase Program, Authorized Amount | $ 30,000 | |||||
Rule 10b5-1 Trading Plan, Designated Amount | $ 10,000 | |||||
Stock Repurchased and Retired During Period, Shares (in shares) | 0 | 0 | 145,000 | 0 | ||
Stock Repurchased and Retired During Period, Value | $ 4,300 | |||||
Share Repurchase Program, Remaining Authorized, Amount | $ 24,900 | $ 24,900 |
Note 6 - Share-based Compensa_3
Note 6 - Share-based Compensation (Details Textual) $ / shares in Units, $ in Millions | 9 Months Ended | 12 Months Ended | ||||
Sep. 30, 2024 USD ($) $ / shares shares | Sep. 30, 2023 $ / shares shares | Dec. 31, 2023 | Dec. 31, 2022 | Dec. 31, 2021 | ||
Number Of Active Stock Incentive Plans | 1 | |||||
Number Of Inactive Stock Incentive Plans | 1 | |||||
Performance Shares [Member] | ||||||
Performance Share Award Target Level, Percentage | 100% | |||||
Performance Awards Issued Multiplier | 90% | 110% | 123% | |||
Share Based Compensation Arrangement By Share Based Payment Award Equity Instruments Other Than Options Nonvested Number At Target Level Of Performance (in shares) | 180,000 | |||||
Performance Shares [Member] | Minimum [Member] | ||||||
Performance Awards Issued Multiplier | 0% | |||||
Performance Shares [Member] | Maximum [Member] | ||||||
Performance Awards Issued Multiplier | 200% | |||||
Restricted Stock Units and Performance Stock Awards [Member] | ||||||
Share-Based Payment Arrangement, Nonvested Award, Excluding Option, Cost Not yet Recognized, Amount | $ | $ 4.9 | |||||
Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition (Year) | 1 year 7 months 6 days | |||||
Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Grants in Period (in shares) | [1] | 120,143 | ||||
Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Grants in Period, Weighted Average Grant Date Fair Value (in dollars per share) | $ / shares | $ 34.68 | |||||
Stock Awards [Member] | Director [Member] | ||||||
Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Grants in Period (in shares) | 14,424 | 15,904 | ||||
Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Grants in Period, Weighted Average Grant Date Fair Value (in dollars per share) | $ / shares | $ 33.27 | $ 29.51 | ||||
[1]The number of PSAs disclosed in this table are at the target level of 100%. |
Note 6 - Share-based Compensa_4
Note 6 - Share-based Compensation - Share-based Compensation Expense (Details) - USD ($) $ in Thousands | 3 Months Ended | 9 Months Ended | ||
Sep. 30, 2024 | Sep. 30, 2023 | Sep. 30, 2024 | Sep. 30, 2023 | |
Share-based compensation expense | $ 1,162 | $ 746 | $ 3,836 | $ 3,050 |
Cost of Sales [Member] | ||||
Share-based compensation expense | 387 | 275 | 1,102 | 816 |
Selling, General and Administrative Expenses [Member] | ||||
Share-based compensation expense | $ 775 | $ 471 | $ 2,734 | $ 2,234 |
Note 6 - Share-based Compensa_5
Note 6 - Share-based Compensation - RSU and PSA Activity (Details) - Restricted Stock Units and Performance Stock Awards [Member] | 9 Months Ended | |
Sep. 30, 2024 $ / shares shares | ||
Unvested RSUs and PSAs (in shares) | shares | 226,391 | [1] |
Unvested RSUs and PSAs, weighted average grant date fair value (in dollars per share) | $ / shares | $ 29.66 | |
RSUs and PSAs granted (in shares) | shares | 120,143 | [1] |
RSUs and PSAs granted, weighted average grant date fair value (in dollars per share) | $ / shares | $ 34.68 | |
Unvested RSUs and PSAs canceled (in shares) | shares | (3,197) | |
Unvested RSUs and PSAs canceled, weighted average grant date fair value (in dollars per share) | $ / shares | $ 29.15 | |
RSUs and PSAs vested (in shares) | shares | (103,266) | [2] |
RSUs and PSAs vested, weighted average grant date fair value (in dollars per share) | $ / shares | $ 30.35 | [2] |
Unvested RSUs and PSAs (in shares) | shares | 240,071 | [1] |
Unvested RSUs and PSAs, weighted average grant date fair value (in dollars per share) | $ / shares | $ 31.89 | |
[1]The number of PSAs disclosed in this table are at the target level of 100%.[2]For the PSAs vested on April 1, 2024, the actual number of common shares that were issued was determined by multiplying the PSAs at the target level of 100%, as disclosed in this table, by a payout percentage based on the performance-based conditions achieved. The payout percentage was 123% for the 2021-2023 performance period, 110% for the 2022-2023 performance period, and 90% for the 2023 performance period. |
Note 7 - Commitments and Cont_2
Note 7 - Commitments and Contingencies (Details Textual) $ in Millions | 1 Months Ended | ||
Jan. 31, 2017 USD ($) | Sep. 30, 2024 USD ($) | Jun. 30, 2014 USD ($) | |
Letters of Credit Outstanding, Amount | $ 1.6 | ||
Capital Addition Purchase Commitments [Member] | |||
Other Commitment, Amount Paid for Equipment Purchased Yet Not Received | 1.2 | ||
Other Commitment | $ 0.9 | ||
Portland Harbor Natural Resources Trustee Council [Member] | |||
Loss Contingency, Accrual, Current | $ 0.4 | ||
Portland Harbor Superfund Site [Member] | |||
Number Of Potentially Responsible Parties | 150 | ||
Estimated Cost of EPA Selected Remedy | $ 1,000 | ||
Estimated Time to Complete Selected EPA Remedy (Year) | 13 years | ||
Lower Willamette Group [Member] | |||
Number Of Potentially Responsible Parties | 14 |
Note 8 - Revenue 1 (Details Tex
Note 8 - Revenue 1 (Details Textual) - USD ($) $ in Millions | 3 Months Ended | 9 Months Ended | ||
Sep. 30, 2024 | Sep. 30, 2023 | Sep. 30, 2024 | Sep. 30, 2023 | |
Contract with Customer, Liability, Cumulative Catch-up Adjustment to Revenue, Change in Estimate of Transaction Price | $ 0.8 | $ (0.8) | $ 3.1 | $ (0.8) |
Revenue, Remaining Performance Obligation, Amount | $ 231 | $ 231 |
Note 8 - Revenue 2 (Details Tex
Note 8 - Revenue 2 (Details Textual) | Sep. 30, 2024 |
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]: 2024-10-01 | |
Revenue, Remaining Performance Obligation, Percentage | 33% |
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Period (Year) | 3 months |
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]: 2025-01-01 | |
Revenue, Remaining Performance Obligation, Percentage | 51% |
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Period (Year) | 1 year |
Note 8 - Revenue - Disaggregati
Note 8 - Revenue - Disaggregation of Revenue (Details) - USD ($) $ in Thousands | 3 Months Ended | 9 Months Ended | ||
Sep. 30, 2024 | Sep. 30, 2023 | Sep. 30, 2024 | Sep. 30, 2023 | |
Net sales | $ 130,201 | $ 118,722 | $ 372,921 | $ 334,191 |
Transferred over Time [Member] | ||||
Net sales | 85,924 | 80,493 | 255,454 | 221,294 |
Transferred at Point in Time [Member] | ||||
Net sales | $ 44,277 | $ 38,229 | $ 117,467 | $ 112,897 |
Note 8 - Revenue - Contract Wit
Note 8 - Revenue - Contract With Customer Assets and Liabilities (Details) - USD ($) $ in Thousands | 9 Months Ended | |
Sep. 30, 2024 | Sep. 30, 2023 | |
Balance, beginning of period | $ 120,516 | $ 121,778 |
Revenue recognized in advance of billings | 220,632 | 192,558 |
Contract With Customer, Asset, Billings | (220,060) | (207,436) |
Contract With Customer, Asset, Other | (105) | (1,480) |
Balance, end of period | 120,983 | 105,420 |
Balance, beginning of period | 21,450 | 17,456 |
Contract With Customer, Liability, Billings | 42,333 | 28,544 |
Revenue recognized | (34,822) | (28,736) |
Contract With Customer, Liability, Other | (64) | 0 |
Balance, end of period | $ 28,897 | $ 17,264 |
Note 9 - Income Taxes (Details
Note 9 - Income Taxes (Details Textual) | 3 Months Ended | 9 Months Ended | ||
Sep. 30, 2024 | Sep. 30, 2023 | Sep. 30, 2024 | Sep. 30, 2023 | |
Effective Income Tax Rate Reconciliation, Percent | 26.30% | 25.70% | 26.30% | 26.60% |
Note 10 - Accumulated Other C_3
Note 10 - Accumulated Other Comprehensive Loss - Components of Accumulated Other Comprehensive Loss (Details) - USD ($) $ in Thousands | 3 Months Ended | 9 Months Ended | ||
Sep. 30, 2024 | Sep. 30, 2023 | Sep. 30, 2024 | Sep. 30, 2023 | |
Balance | $ 351,183 | $ 328,601 | $ 340,360 | $ 318,274 |
Other comprehensive loss, net of tax | (238) | (27) | (196) | (162) |
Balance | 362,360 | 335,138 | 362,360 | 335,138 |
Accumulated Defined Benefit Plans Adjustment Attributable to Parent [Member] | ||||
Balance | (1,193) | (1,532) | ||
Other comprehensive income (loss) before reclassifications | 57 | 78 | ||
Amounts reclassified from Accumulated other comprehensive loss | 10 | 10 | ||
Other comprehensive loss, net of tax | 67 | 88 | ||
Balance | (1,126) | (1,444) | (1,126) | (1,444) |
Accumulated Gain (Loss), Net, Cash Flow Hedge, Parent [Member] | Foreign Exchange Forward [Member] | ||||
Balance | (13) | 94 | ||
Other comprehensive income (loss) before reclassifications | 11 | (115) | ||
Amounts reclassified from Accumulated other comprehensive loss | 2 | 17 | ||
Other comprehensive loss, net of tax | 13 | (98) | ||
Balance | 0 | (4) | 0 | (4) |
Accumulated Gain (Loss), Net, Cash Flow Hedge, Parent [Member] | Interest Rate Swap [Member] | ||||
Balance | 246 | 649 | ||
Other comprehensive income (loss) before reclassifications | (60) | 266 | ||
Amounts reclassified from Accumulated other comprehensive loss | (216) | (418) | ||
Other comprehensive loss, net of tax | (276) | (152) | ||
Balance | (30) | 497 | (30) | 497 |
AOCI Attributable to Parent [Member] | ||||
Balance | (918) | (924) | (960) | (789) |
Other comprehensive income (loss) before reclassifications | 8 | 229 | ||
Amounts reclassified from Accumulated other comprehensive loss | (204) | (391) | ||
Other comprehensive loss, net of tax | (196) | (162) | ||
Balance | $ (1,156) | $ (951) | $ (1,156) | $ (951) |
Note 10 - Accumulated Other C_4
Note 10 - Accumulated Other Comprehensive Loss - Reclassification of Accumulated Other Comprehensive Loss (Details) - USD ($) $ in Thousands | 3 Months Ended | 9 Months Ended | ||
Sep. 30, 2024 | Sep. 30, 2023 | Sep. 30, 2024 | Sep. 30, 2023 | |
Cost of sales | $ 103,182 | $ 99,428 | $ 299,954 | $ 275,839 |
Net income | 10,253 | 5,818 | 24,110 | 15,628 |
Net sales | 130,201 | 118,722 | 372,921 | 334,191 |
Tax (expense) benefit | (3,667) | (2,016) | (8,601) | (5,659) |
Gain on cash flow hedges | 1,452 | 1,162 | 4,749 | 3,722 |
Reclassification out of Accumulated Other Comprehensive Income [Member] | ||||
Net income | 63 | 139 | 204 | 391 |
Reclassification out of Accumulated Other Comprehensive Income [Member] | Accumulated Defined Benefit Plans Adjustment Attributable to Parent [Member] | ||||
Cost of sales | (4) | (4) | (10) | (10) |
Net income | (4) | (4) | (10) | (10) |
Reclassification out of Accumulated Other Comprehensive Income [Member] | Accumulated Gain (Loss), Net, Cash Flow Hedge, Parent [Member] | Foreign Exchange Forward [Member] | ||||
Net income | 0 | (9) | (2) | (17) |
Net sales | 0 | 10 | (3) | 87 |
Property and equipment | 0 | (22) | 0 | (109) |
Tax (expense) benefit | 0 | 3 | 1 | 5 |
Reclassification out of Accumulated Other Comprehensive Income [Member] | Accumulated Gain (Loss), Net, Cash Flow Hedge, Parent [Member] | Interest Rate Swap [Member] | ||||
Net income | 67 | 152 | 216 | 418 |
Tax (expense) benefit | (21) | (49) | (69) | (135) |
Gain on cash flow hedges | $ 88 | $ 201 | $ 285 | $ 553 |
Note 11 - Net Income Per Shar_2
Note 11 - Net Income Per Share - Loss Per Basic and Diluted Weighted Average Common Share Outstanding for Continuing and Discontinued Operations (Details) - USD ($) $ / shares in Units, shares in Thousands, $ in Thousands | 3 Months Ended | 9 Months Ended | ||
Sep. 30, 2024 | Sep. 30, 2023 | Sep. 30, 2024 | Sep. 30, 2023 | |
Net income | $ 10,253 | $ 5,818 | $ 24,110 | $ 15,628 |
Basic (in shares) | 9,919 | 10,014 | 9,915 | 9,985 |
Effect of potentially dilutive common shares (in shares) | 136 | 93 | 125 | 103 |
Diluted weighted-average common shares outstanding (in shares) | 10,055 | 10,107 | 10,040 | 10,088 |
Basic (in dollars per share) | $ 1.03 | $ 0.58 | $ 2.43 | $ 1.57 |
Diluted (in dollars per share) | $ 1.02 | $ 0.58 | $ 2.4 | $ 1.55 |
Note 12 - Segment Information -
Note 12 - Segment Information - Information Related to the Operations of the Company's Operating Segments (Details) - USD ($) $ in Thousands | 3 Months Ended | 9 Months Ended | ||
Sep. 30, 2024 | Sep. 30, 2023 | Sep. 30, 2024 | Sep. 30, 2023 | |
Net sales | $ 130,201 | $ 118,722 | $ 372,921 | $ 334,191 |
Gross profit | 27,019 | 19,294 | 72,967 | 58,352 |
Operating Segments [Member] | ||||
Net sales | 130,201 | 118,722 | 372,921 | 334,191 |
Gross profit | 27,019 | 19,294 | 72,967 | 58,352 |
Operating Segments [Member] | Engineered Steel Pressure Pipe [Member] | ||||
Net sales | 85,924 | 80,493 | 255,454 | 221,294 |
Gross profit | 16,628 | 10,911 | 47,851 | 31,264 |
Operating Segments [Member] | Precast Infrastructure and Engineered Systems [Member] | ||||
Net sales | 44,277 | 38,229 | 117,467 | 112,897 |
Gross profit | $ 10,391 | $ 8,383 | $ 25,116 | $ 27,088 |
Note 14 - Subsequent Event (Det
Note 14 - Subsequent Event (Details Textual) $ in Millions | Oct. 31, 2024 USD ($) |
Debt Instrument, Variable Interest Rate, Type [Extensible Enumeration] | Secured Overnight Financing Rate (SOFR) [Member] |
Subsequent Event [Member] | Wells Fargo Bank, N.A. [Member] | Term Loan [Member] | |
Debt Instrument, Basis Spread on Variable Rate | 2.22% |
Debt Instrument, Periodic Payment | $ 0.3 |
Debt Instrument, Prepayment Fee, Percentage of Outstanding Principal | 2% |
Conversion of Interim Funding Agreement Debt into Term Loan [Member] | Subsequent Event [Member] | Wells Fargo Bank, N.A. [Member] | |
Debt Conversion, Original Debt, Amount | $ 10.8 |
Debt Conversion, Converted Instrument, Amount | $ 15 |