Document And Entity Information
Document And Entity Information - shares | 6 Months Ended | |
Jun. 30, 2024 | Jul. 23, 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 | Q2 | |
Document Fiscal Year Focus | 2024 | |
Document Type | 10-Q | |
Document Quarterly Report | true | |
Document Period End Date | Jun. 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 | 6 Months Ended | ||
Jun. 30, 2024 | Jun. 30, 2023 | Jun. 30, 2024 | Jun. 30, 2023 | |
Net sales | $ 129,505 | $ 116,372 | $ 242,720 | $ 215,469 |
Cost of sales | 103,691 | 93,891 | 196,772 | 176,411 |
Gross profit | 25,814 | 22,481 | 45,948 | 39,058 |
Selling, general, and administrative expense | 12,195 | 11,016 | 23,639 | 22,882 |
Operating income | 13,619 | 11,465 | 22,309 | 16,176 |
Other expense | (228) | (134) | (221) | (163) |
Interest expense | (1,823) | (1,191) | (3,297) | (2,560) |
Income before income taxes | 11,568 | 10,140 | 18,791 | 13,453 |
Income tax expense | 2,949 | 2,692 | 4,934 | 3,643 |
Net income | $ 8,619 | $ 7,448 | $ 13,857 | $ 9,810 |
us-gaap_EarningsPerShareAbstract | ||||
Basic (in dollars per share) | $ 0.87 | $ 0.74 | $ 1.4 | $ 0.98 |
Diluted (in dollars per share) | $ 0.86 | $ 0.74 | $ 1.38 | $ 0.97 |
Shares used in per share calculations: | ||||
Basic (in shares) | 9,912 | 10,000 | 9,914 | 9,970 |
Diluted (in shares) | 9,995 | 10,066 | 10,025 | 10,081 |
Condensed Consolidated Statem_2
Condensed Consolidated Statements of Comprehensive Income (Unaudited) - USD ($) $ in Thousands | 3 Months Ended | 6 Months Ended | ||
Jun. 30, 2024 | Jun. 30, 2023 | Jun. 30, 2024 | Jun. 30, 2023 | |
Net income | $ 8,619 | $ 7,448 | $ 13,857 | $ 9,810 |
Other comprehensive income (loss), net of tax: | ||||
Net current period other comprehensive income (loss) | (13) | (8) | 42 | (135) |
Comprehensive income | 8,606 | 7,440 | 13,899 | 9,675 |
Foreign Exchange Forward [Member] | ||||
Other comprehensive income (loss), net of tax: | ||||
Unrealized gain (loss) on derivatives designated as cash flow hedges | 3 | (123) | 13 | (101) |
Interest Rate Swap [Member] | ||||
Other comprehensive income (loss), net of tax: | ||||
Unrealized gain (loss) on derivatives designated as cash flow hedges | (39) | 85 | (15) | (93) |
Pension Plan [Member] | ||||
Other comprehensive income (loss), net of tax: | ||||
Pension liability adjustment | $ 23 | $ 30 | $ 44 | $ 59 |
Condensed Consolidated Balance
Condensed Consolidated Balance Sheets (Current Period Unaudited) - USD ($) $ in Thousands | Jun. 30, 2024 | Dec. 31, 2023 |
Current assets: | ||
Cash and cash equivalents | $ 4,528 | $ 4,068 |
Trade and other receivables, net of allowance of $246 and $121 | 70,933 | 47,645 |
Contract assets | 139,481 | 120,516 |
Inventories | 87,732 | 91,229 |
Prepaid expenses and other | 5,274 | 9,026 |
Total current assets | 307,948 | 272,484 |
Property and equipment, less accumulated depreciation and amortization of $132,964 and $126,359 | 147,351 | 143,955 |
Operating lease right-of-use assets | 85,491 | 88,155 |
Goodwill | 55,504 | 55,504 |
Intangible assets, net | 29,058 | 31,074 |
Other assets | 6,393 | 6,709 |
Total assets | 631,745 | 597,881 |
Current liabilities: | ||
Current debt | 10,756 | 10,756 |
Accounts payable | 24,508 | 31,142 |
Accrued liabilities | 23,234 | 27,913 |
Contract liabilities | 37,105 | 21,450 |
Current portion of operating lease liabilities | 5,108 | 4,933 |
Total current liabilities | 100,711 | 96,194 |
Borrowings on line of credit | 75,923 | 54,485 |
Operating lease liabilities | 82,919 | 85,283 |
Deferred income taxes | 11,159 | 10,942 |
Other long-term liabilities | 9,850 | 10,617 |
Total liabilities | 280,562 | 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 June 30, 2024 and December 31, 2023, respectively | 99 | 100 |
Additional paid-in-capital | 126,020 | 129,095 |
Retained earnings | 225,982 | 212,125 |
Accumulated other comprehensive loss | (918) | (960) |
Total stockholders’ equity | 351,183 | 340,360 |
Total liabilities and stockholders’ equity | $ 631,745 | $ 597,881 |
Condensed Consolidated Balanc_2
Condensed Consolidated Balance Sheets (Current Period Unaudited) (Parentheticals) - USD ($) $ in Thousands | Jun. 30, 2024 | Dec. 31, 2023 |
Allowance for doubtful accounts | $ 246 | $ 121 |
Accumulated depreciation and amortization | $ 132,964 | $ 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] | 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] | 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] | 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 | 9,810 | 0 | 9,810 | |||||||||||||||
Pension liability adjustment | $ 0 | $ 0 | $ 0 | $ 59 | $ 59 | |||||||||||||||
Unrealized gain (loss) on derivatives designated as cash flow hedges | $ 0 | $ 0 | $ 0 | $ (101) | $ (101) | $ 0 | $ 0 | $ 0 | $ (93) | $ (93) | ||||||||||
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) | ||||||||||||||||||
Share-based compensation expense | $ 0 | 2,304 | 0 | 0 | 2,304 | |||||||||||||||
Balances (in shares) at Jun. 30, 2023 | 10,014,196 | |||||||||||||||||||
Balance at Jun. 30, 2023 | $ 100 | 128,562 | 200,863 | (924) | 328,601 | |||||||||||||||
Balances (in shares) at Mar. 31, 2023 | 9,998,292 | |||||||||||||||||||
Balance at Mar. 31, 2023 | $ 100 | 128,478 | 193,415 | (916) | 321,077 | |||||||||||||||
Net income | $ 0 | 0 | 7,448 | 0 | 7,448 | |||||||||||||||
Pension liability adjustment | 0 | 0 | 0 | 30 | 30 | |||||||||||||||
Unrealized gain (loss) on derivatives designated as cash flow hedges | 0 | 0 | 0 | (123) | (123) | 0 | 0 | 0 | 85 | 85 | ||||||||||
Issuance of common stock under stock compensation plans, net of tax withholdings (in shares) | 15,904 | |||||||||||||||||||
Issuance of common stock under stock compensation plans, net of tax withholdings | (1,230) | (1,230) | ||||||||||||||||||
Share-based compensation expense | $ 0 | 1,314 | 0 | 0 | 1,314 | |||||||||||||||
Balances (in shares) at Jun. 30, 2023 | 10,014,196 | |||||||||||||||||||
Balance at Jun. 30, 2023 | $ 100 | 128,562 | 200,863 | (924) | 328,601 | |||||||||||||||
Balances (in shares) at Mar. 31, 2023 | 9,998,292 | |||||||||||||||||||
Balance at Mar. 31, 2023 | $ 100 | 128,478 | 193,415 | (916) | 321,077 | |||||||||||||||
Balances (in shares) at Jun. 30, 2024 | 9,918,711 | |||||||||||||||||||
Balance at Jun. 30, 2024 | $ 99 | 126,020 | 225,982 | (918) | 351,183 | |||||||||||||||
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 | 13,857 | 0 | 13,857 | |||||||||||||||
Pension liability adjustment | 0 | 0 | 0 | 44 | 44 | |||||||||||||||
Unrealized gain (loss) on derivatives designated as cash flow hedges | 0 | 0 | 0 | 13 | 13 | 0 | 0 | 0 | (15) | (15) | ||||||||||
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) | |||||||||||||||
Share-based compensation expense | $ 0 | 2,674 | 0 | 0 | 2,674 | |||||||||||||||
Balances (in shares) at Jun. 30, 2024 | 9,918,711 | |||||||||||||||||||
Balance at Jun. 30, 2024 | $ 99 | 126,020 | 225,982 | (918) | 351,183 | |||||||||||||||
Balances (in shares) at Mar. 31, 2024 | 9,872,897 | |||||||||||||||||||
Balance at Mar. 31, 2024 | $ 99 | 126,057 | 217,363 | (905) | 342,614 | |||||||||||||||
Net income | $ 0 | 0 | 8,619 | 0 | 8,619 | |||||||||||||||
Pension liability adjustment | $ 0 | $ 0 | $ 0 | $ 23 | $ 23 | |||||||||||||||
Unrealized gain (loss) on derivatives designated as cash flow hedges | $ 0 | $ 0 | $ 0 | $ 3 | $ 3 | $ 0 | $ 0 | $ 0 | $ (39) | $ (39) | ||||||||||
Issuance of common stock under stock compensation plans, net of tax withholdings (in shares) | 63,329 | |||||||||||||||||||
Issuance of common stock under stock compensation plans, net of tax withholdings | (1,129) | (1,129) | ||||||||||||||||||
Repurchase of common stock (in shares) | (17,515) | |||||||||||||||||||
Repurchase of common stock | $ 0 | (557) | 0 | 0 | (557) | |||||||||||||||
Share-based compensation expense | $ 0 | 1,649 | 0 | 0 | 1,649 | |||||||||||||||
Balances (in shares) at Jun. 30, 2024 | 9,918,711 | |||||||||||||||||||
Balance at Jun. 30, 2024 | $ 99 | $ 126,020 | $ 225,982 | $ (918) | $ 351,183 |
Condensed Consolidated Statem_4
Condensed Consolidated Statements of Stockholders' Equity (Unaudited) (Parentheticals) - USD ($) $ in Thousands | 3 Months Ended | 6 Months Ended | ||
Jun. 30, 2024 | Jun. 30, 2023 | Jun. 30, 2024 | Jun. 30, 2023 | |
Pension Plan [Member] | ||||
Pension liability adjustment, tax expense/benefit | $ 0 | $ 0 | $ 0 | $ 0 |
Foreign Exchange Forward [Member] | ||||
Unrealized gain (loss) on cash flow hedges, tax expense/benefit | 1 | (40) | 12 | (35) |
Unrealized gain (loss) on cash flow hedges, tax expense/benefit | (1) | 40 | (12) | 35 |
Interest Rate Swap [Member] | ||||
Unrealized gain (loss) on cash flow hedges, tax expense/benefit | (13) | 24 | (5) | (34) |
Unrealized gain (loss) on cash flow hedges, tax expense/benefit | $ 13 | $ (24) | $ 5 | $ 34 |
Condensed Consolidated Statem_5
Condensed Consolidated Statements of Cash Flows (Unaudited) - USD ($) $ in Thousands | 6 Months Ended | |
Jun. 30, 2024 | Jun. 30, 2023 | |
Cash flows from operating activities: | ||
Net income | $ 13,857 | $ 9,810 |
Adjustments to reconcile net income to net cash provided by (used in) operating activities: | ||
Depreciation and finance lease amortization | 7,106 | 5,642 |
Amortization of intangible assets | 2,016 | 2,104 |
Deferred income taxes | 227 | 417 |
Share-based compensation expense | 2,674 | 2,304 |
Other, net | 360 | 1,325 |
Changes in operating assets and liabilities: | ||
Trade and other receivables | (23,653) | 7,911 |
Contract assets, net | (3,311) | 8,953 |
Inventories | 3,497 | (13,550) |
Prepaid expenses and other assets | 6,942 | 7,573 |
Accounts payable | (6,316) | (5) |
Accrued and other liabilities | (7,214) | (5,005) |
Net cash provided by (used in) operating activities | (3,815) | 27,479 |
Cash flows from investing activities: | ||
Purchases of property and equipment | (10,634) | (8,414) |
Payment of working capital adjustment in acquisition of business | 0 | (2,731) |
Other investing activities | 61 | 9 |
Net cash used in investing activities | (10,573) | (11,136) |
Cash flows from financing activities: | ||
Borrowings on line of credit | 105,324 | 72,912 |
Repayments on line of credit | (83,886) | (86,539) |
Payments on finance lease obligations | (712) | (311) |
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 | (282) |
Net cash provided by (used in) financing activities | 14,848 | (15,872) |
Change in cash and cash equivalents | 460 | 471 |
Cash and cash equivalents, beginning of period | 4,068 | 3,681 |
Cash and cash equivalents, end of period | 4,528 | 4,152 |
Noncash investing and financing activities: | ||
Accrued property and equipment purchases | 466 | 1,072 |
Right-of-use assets obtained in exchange for finance lease liabilities | 233 | 2,112 |
Right-of-use assets obtained in exchange for operating lease liabilities | $ 303 | $ 952 |
Note 1 - Organization and Basis
Note 1 - Organization and Basis of Presentation | 6 Months Ended |
Jun. 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 six June 30, 2024 not may December 31, 2024 |
Note 2 - Inventories
Note 2 - Inventories | 6 Months Ended |
Jun. 30, 2024 | |
Notes to Financial Statements | |
Inventory Disclosure [Text Block] | 2. Inventories Inventories consist of the following (in thousands): June 30, 2024 December 31, 2023 Raw materials $ 63,511 $ 68,110 Work-in-process 9,373 8,912 Finished goods 12,532 11,911 Supplies 2,316 2,296 Total inventories $ 87,732 $ 91,229 |
Note 3 - Fair Value Measurement
Note 3 - Fair Value Measurements | 6 Months Ended |
Jun. 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 June 30, 2024 Financial assets: Deferred compensation plan $ 3,660 $ 3,177 $ 483 $ - Foreign currency forward contracts 18 - 18 - Interest rate swaps 331 - 331 - Total financial assets $ 4,009 $ 3,177 $ 832 $ - Financial liabilities: Foreign currency forward contracts $ (1 ) $ - $ (1 ) $ - Interest rate swaps (25 ) - (25 ) - Total financial liabilities $ (26 ) $ - $ (26 ) $ - 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 | 6 Months Ended |
Jun. 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 June 30, 2024 CAD$3.4 EUR€1.1 none December 31, 2023 CAD$6.7 EUR€1.1 CAD$6.4 EUR€1.1 not June 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 one December 31, 2023 zero April 2024 second April 3, 2023, 30 June 30, 2024 December 31, 2023 zero April 2028 third June 30, 2024, June 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 June 30, Six Months Ended June 30, 2024 2023 2024 2023 Foreign currency forward contracts: Net sales $ 11 $ (396 ) $ 111 $ (678 ) Property and equipment - - - (87 ) Interest rate swaps: Interest expense 77 194 197 352 Total $ 88 $ (202 ) $ 308 $ (413 ) As of June 30, 2024 twelve 10, |
Note 5 - Stockholders' Equity
Note 5 - Stockholders' Equity | 6 Months Ended |
Jun. 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 three six June 30, 2024 three six June 30, 2023 June 30, 2024 |
Note 6 - Share-based Compensati
Note 6 - Share-based Compensation | 6 Months Ended |
Jun. 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 June 30, Six Months Ended June 30, 2024 2023 2024 2023 Cost of sales $ 363 $ 266 $ 715 $ 541 Selling, general, and administrative expense 1,286 1,048 1,959 1,763 Total $ 1,649 $ 1,314 $ 2,674 $ 2,304 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 June 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 June 30, 2024 Based on the estimated level of achievement of the performance targets associated with the PSAs as of June 30, 2024 Stock Awards For the six June 30, 2024 2023 2024 2023 |
Note 7 - Commitments and Contin
Note 7 - Commitments and Contingencies | 6 Months Ended |
Jun. 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 June 30, 2024 not Guarantees The Company has entered into certain letters of credit that total $1.6 million as of June 30, 2024 |
Note 8 - Revenue
Note 8 - Revenue | 6 Months Ended |
Jun. 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.4 million and $2.3 million for the three six June 30, 2024 three six June 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 June 30, Six Months Ended June 30, 2024 2023 2024 2023 Over time $ 89,523 $ 77,255 $ 169,530 $ 140,801 Point in time 39,982 39,117 73,190 74,668 Net sales $ 129,505 $ 116,372 $ 242,720 $ 215,469 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): Six Months Ended June 30, 2024 2023 Balance, beginning of period $ 120,516 $ 121,778 Revenue recognized in advance of billings 156,976 126,071 Billings (139,827 ) (124,451 ) Other 1,816 (1,039 ) Balance, end of period $ 139,481 $ 122,359 The following is a summary of the changes in contract liabilities (in thousands): Six Months Ended June 30, 2024 2023 Balance, beginning of period $ 21,450 $ 17,456 Billings 28,214 24,098 Revenue recognized (12,554 ) (14,730 ) Other (5 ) 166 Balance, end of period $ 37,105 $ 26,990 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 June 30, 2024 2024 2025 |
Note 9 - Income Taxes
Note 9 - Income Taxes | 6 Months Ended |
Jun. 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 2019. The Company recorded income tax expense at an estimated effective income tax rate of 25.5% and 26.3% for the three six June 30, 2024 three six June 30, 2023 three six June 30, 2024 2023 |
Note 10 - Accumulated Other Com
Note 10 - Accumulated Other Comprehensive Loss | 6 Months Ended |
Jun. 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 on Interest Rate Swaps Designated as Cash Flow Hedges Total Balances, December 31, 2023 $ (1,193 ) $ (13 ) $ 246 $ (960 ) Other comprehensive income before reclassifications 38 11 134 183 Amounts reclassified from Accumulated other comprehensive loss 6 2 (149 ) (141 ) Net current period other comprehensive income (loss) 44 13 (15 ) 42 Balances, June 30, 2024 $ (1,149 ) $ - $ 231 $ (918 ) 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 53 (109 ) 173 117 Amounts reclassified from Accumulated other comprehensive loss 6 8 (266 ) (252 ) Net current period other comprehensive income (loss) 59 (101 ) (93 ) (135 ) Balances, June 30, 2023 $ (1,473 ) $ (7 ) $ 556 $ (924 ) 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 the Condensed Details about Accumulated Accumulated Other Comprehensive Loss Consolidated Other Comprehensive Loss Three Months Ended June 30, Six Months Ended June 30, Statements Components 2024 2023 2024 2023 of Operations Pension liability adjustment: Net periodic pension cost: Service cost $ (3 ) $ (3 ) $ (6 ) $ (6 ) Cost of sales (3 ) (3 ) (6 ) (6 ) Net of tax Unrealized gain (loss) on foreign currency forward contracts: Gain (loss) on cash flow hedges (1 ) 33 (3 ) 77 Net sales Loss on cash flow hedges - - - (87 ) Property and equipment Associated income tax (expense) benefit 1 (9 ) 1 2 Income tax expense - 24 (2 ) (8 ) Net of tax Unrealized gain on interest rate swaps: Gain on cash flow hedges 77 194 197 352 Interest expense Associated income tax expense (19 ) (47 ) (48 ) (86 ) Income tax expense 58 147 149 266 Net of tax Total reclassifications for the period $ 55 $ 168 $ 141 $ 252 |
Note 11 - Net Income Per Share
Note 11 - Net Income Per Share | 6 Months Ended |
Jun. 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 June 30, Six Months Ended June 30, 2024 2023 2024 2023 Net income $ 8,619 $ 7,448 $ 13,857 $ 9,810 Basic weighted-average common shares outstanding 9,912 10,000 9,914 9,970 Effect of potentially dilutive common shares (1) 83 66 111 111 Diluted weighted-average common shares outstanding 9,995 10,066 10,025 10,081 Net income per common share: Basic $ 0.87 $ 0.74 $ 1.40 $ 0.98 Diluted $ 0.86 $ 0.74 $ 1.38 $ 0.97 ( 1 The weighted-average number of antidilutive shares not six June 30, 2024 three June 30, 2024 three six June 30, 2023 |
Note 12 - Segment Information
Note 12 - Segment Information | 6 Months Ended |
Jun. 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 June 30, Six Months Ended June 30, 2024 2023 2024 2023 Net sales: Engineered Steel Pressure Pipe $ 89,523 $ 77,255 $ 169,530 $ 140,801 Precast Infrastructure and Engineered Systems 39,982 39,117 73,190 74,668 Total net sales $ 129,505 $ 116,372 $ 242,720 $ 215,469 Gross profit: Engineered Steel Pressure Pipe $ 16,981 $ 12,571 $ 31,223 $ 20,353 Precast Infrastructure and Engineered Systems 8,833 9,910 14,725 18,705 Total gross profit $ 25,814 $ 22,481 $ 45,948 $ 39,058 |
Note 13 - Recent Accounting and
Note 13 - Recent Accounting and Reporting Developments | 6 Months Ended |
Jun. 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 |
Insider Trading Arrangements
Insider Trading Arrangements | 3 Months Ended | 6 Months Ended |
Jun. 30, 2024 shares | Jun. 30, 2024 shares | |
ecd_TradingArrByIndTable | ||
Material Terms of Trading Arrangement [Text Block] | 5. During the three June 30, 2024 none 10b5‑1 10b5‑1 408 On May 31, 2024 , Megan Kendrick Vice President of Human Resources adopted 10b5‑1 10b5‑1 10b5‑1 September 15, 2024 December 31, 2024, 10b5‑1 On June 5, 2024 , Miles Brittain Executive Vice President adopted 10b5‑1 10b5‑1 10b5‑1 September 4, 2024 June 6, 2025, 10b5‑1 | |
Non-Rule 10b5-1 Arrangement Adopted [Flag] | false | |
Rule 10b5-1 Arrangement Terminated [Flag] | false | |
Non-Rule 10b5-1 Arrangement Terminated [Flag] | false | |
Megan Kendrick [Member] | ||
ecd_TradingArrByIndTable | ||
Trading Arrangement, Securities Aggregate Available Amount | 2,000 | 2,000 |
Trading Arrangement Adoption Date | May 31, 2024 | |
Trading Arrangement, Individual Name | Megan Kendrick | |
Trading Arrangement, Individual Title | Vice President of Human Resources | |
Rule 10b5-1 Arrangement Adopted [Flag] | true | |
Miles Brittain [Member] | ||
ecd_TradingArrByIndTable | ||
Trading Arrangement, Securities Aggregate Available Amount | 4,500 | 4,500 |
Trading Arrangement Adoption Date | June 5, 2024 | |
Trading Arrangement, Individual Name | Miles Brittain | |
Trading Arrangement, Individual Title | Executive Vice President | |
Rule 10b5-1 Arrangement Adopted [Flag] | true |
Note 2 - Inventories (Tables)
Note 2 - Inventories (Tables) | 6 Months Ended |
Jun. 30, 2024 | |
Notes Tables | |
Schedule Of Inventory Current And Non Current [Table Text Block] | June 30, 2024 December 31, 2023 Raw materials $ 63,511 $ 68,110 Work-in-process 9,373 8,912 Finished goods 12,532 11,911 Supplies 2,316 2,296 Total inventories $ 87,732 $ 91,229 |
Note 3 - Fair Value Measureme_2
Note 3 - Fair Value Measurements (Tables) | 6 Months Ended |
Jun. 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 June 30, 2024 Financial assets: Deferred compensation plan $ 3,660 $ 3,177 $ 483 $ - Foreign currency forward contracts 18 - 18 - Interest rate swaps 331 - 331 - Total financial assets $ 4,009 $ 3,177 $ 832 $ - Financial liabilities: Foreign currency forward contracts $ (1 ) $ - $ (1 ) $ - Interest rate swaps (25 ) - (25 ) - Total financial liabilities $ (26 ) $ - $ (26 ) $ - 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) | 6 Months Ended |
Jun. 30, 2024 | |
Notes Tables | |
Derivative Instruments, Gain (Loss) [Table Text Block] | Three Months Ended June 30, Six Months Ended June 30, 2024 2023 2024 2023 Foreign currency forward contracts: Net sales $ 11 $ (396 ) $ 111 $ (678 ) Property and equipment - - - (87 ) Interest rate swaps: Interest expense 77 194 197 352 Total $ 88 $ (202 ) $ 308 $ (413 ) |
Note 6 - Share-based Compensa_2
Note 6 - Share-based Compensation (Tables) | 6 Months Ended |
Jun. 30, 2024 | |
Notes Tables | |
Share-Based Payment Arrangement, Expensed and Capitalized, Amount [Table Text Block] | Three Months Ended June 30, Six Months Ended June 30, 2024 2023 2024 2023 Cost of sales $ 363 $ 266 $ 715 $ 541 Selling, general, and administrative expense 1,286 1,048 1,959 1,763 Total $ 1,649 $ 1,314 $ 2,674 $ 2,304 |
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 June 30, 2024 240,071 31.89 |
Note 8 - Revenue (Tables)
Note 8 - Revenue (Tables) | 6 Months Ended |
Jun. 30, 2024 | |
Notes Tables | |
Disaggregation of Revenue [Table Text Block] | Three Months Ended June 30, Six Months Ended June 30, 2024 2023 2024 2023 Over time $ 89,523 $ 77,255 $ 169,530 $ 140,801 Point in time 39,982 39,117 73,190 74,668 Net sales $ 129,505 $ 116,372 $ 242,720 $ 215,469 |
Contract with Customer, Contract Asset, Contract Liability, and Receivable [Table Text Block] | Six Months Ended June 30, 2024 2023 Balance, beginning of period $ 120,516 $ 121,778 Revenue recognized in advance of billings 156,976 126,071 Billings (139,827 ) (124,451 ) Other 1,816 (1,039 ) Balance, end of period $ 139,481 $ 122,359 Six Months Ended June 30, 2024 2023 Balance, beginning of period $ 21,450 $ 17,456 Billings 28,214 24,098 Revenue recognized (12,554 ) (14,730 ) Other (5 ) 166 Balance, end of period $ 37,105 $ 26,990 |
Note 10 - Accumulated Other C_2
Note 10 - Accumulated Other Comprehensive Loss (Tables) | 6 Months Ended |
Jun. 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 on Interest Rate Swaps Designated as Cash Flow Hedges Total Balances, December 31, 2023 $ (1,193 ) $ (13 ) $ 246 $ (960 ) Other comprehensive income before reclassifications 38 11 134 183 Amounts reclassified from Accumulated other comprehensive loss 6 2 (149 ) (141 ) Net current period other comprehensive income (loss) 44 13 (15 ) 42 Balances, June 30, 2024 $ (1,149 ) $ - $ 231 $ (918 ) 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 53 (109 ) 173 117 Amounts reclassified from Accumulated other comprehensive loss 6 8 (266 ) (252 ) Net current period other comprehensive income (loss) 59 (101 ) (93 ) (135 ) Balances, June 30, 2023 $ (1,473 ) $ (7 ) $ 556 $ (924 ) |
Reclassification out of Accumulated Other Comprehensive Income [Table Text Block] | Amount reclassified from Affected line item in the Condensed Details about Accumulated Accumulated Other Comprehensive Loss Consolidated Other Comprehensive Loss Three Months Ended June 30, Six Months Ended June 30, Statements Components 2024 2023 2024 2023 of Operations Pension liability adjustment: Net periodic pension cost: Service cost $ (3 ) $ (3 ) $ (6 ) $ (6 ) Cost of sales (3 ) (3 ) (6 ) (6 ) Net of tax Unrealized gain (loss) on foreign currency forward contracts: Gain (loss) on cash flow hedges (1 ) 33 (3 ) 77 Net sales Loss on cash flow hedges - - - (87 ) Property and equipment Associated income tax (expense) benefit 1 (9 ) 1 2 Income tax expense - 24 (2 ) (8 ) Net of tax Unrealized gain on interest rate swaps: Gain on cash flow hedges 77 194 197 352 Interest expense Associated income tax expense (19 ) (47 ) (48 ) (86 ) Income tax expense 58 147 149 266 Net of tax Total reclassifications for the period $ 55 $ 168 $ 141 $ 252 |
Note 11 - Net Income Per Share
Note 11 - Net Income Per Share (Tables) | 6 Months Ended |
Jun. 30, 2024 | |
Notes Tables | |
Schedule of Earnings Per Share, Basic and Diluted [Table Text Block] | Three Months Ended June 30, Six Months Ended June 30, 2024 2023 2024 2023 Net income $ 8,619 $ 7,448 $ 13,857 $ 9,810 Basic weighted-average common shares outstanding 9,912 10,000 9,914 9,970 Effect of potentially dilutive common shares (1) 83 66 111 111 Diluted weighted-average common shares outstanding 9,995 10,066 10,025 10,081 Net income per common share: Basic $ 0.87 $ 0.74 $ 1.40 $ 0.98 Diluted $ 0.86 $ 0.74 $ 1.38 $ 0.97 |
Note 12 - Segment Information (
Note 12 - Segment Information (Tables) | 6 Months Ended |
Jun. 30, 2024 | |
Notes Tables | |
Schedule of Segment Reporting Information, by Segment [Table Text Block] | Three Months Ended June 30, Six Months Ended June 30, 2024 2023 2024 2023 Net sales: Engineered Steel Pressure Pipe $ 89,523 $ 77,255 $ 169,530 $ 140,801 Precast Infrastructure and Engineered Systems 39,982 39,117 73,190 74,668 Total net sales $ 129,505 $ 116,372 $ 242,720 $ 215,469 Gross profit: Engineered Steel Pressure Pipe $ 16,981 $ 12,571 $ 31,223 $ 20,353 Precast Infrastructure and Engineered Systems 8,833 9,910 14,725 18,705 Total gross profit $ 25,814 $ 22,481 $ 45,948 $ 39,058 |
Note 1 - Organization and Bas_2
Note 1 - Organization and Basis of Presentation (Details Textual) | 6 Months Ended |
Jun. 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 | Jun. 30, 2024 | Dec. 31, 2023 |
Raw materials | $ 63,511 | $ 68,110 |
Work-in-process | 9,373 | 8,912 |
Finished goods | 12,532 | 11,911 |
Supplies | 2,316 | 2,296 |
Total inventories | $ 87,732 | $ 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 | Jun. 30, 2024 | Dec. 31, 2023 |
Total financial assets | $ 4,009 | $ 4,280 |
Total financial liabilities | (26) | |
Fair Value, Inputs, Level 1 [Member] | ||
Total financial assets | 3,177 | 3,391 |
Total financial liabilities | 0 | |
Fair Value, Inputs, Level 2 [Member] | ||
Total financial assets | 832 | 889 |
Total financial liabilities | (26) | |
Fair Value, Inputs, Level 3 [Member] | ||
Total financial assets | 0 | 0 |
Total financial liabilities | 0 | |
Deferred Compensation Plan [Member] | ||
Deferred compensation plan | 3,660 | 3,912 |
Deferred Compensation Plan [Member] | Fair Value, Inputs, Level 1 [Member] | ||
Deferred compensation plan | 3,177 | 3,391 |
Deferred Compensation Plan [Member] | Fair Value, Inputs, Level 2 [Member] | ||
Deferred compensation plan | 483 | 521 |
Deferred Compensation Plan [Member] | Fair Value, Inputs, Level 3 [Member] | ||
Deferred compensation plan | 0 | 0 |
Foreign Exchange Forward [Member] | ||
Derivative assets | 18 | 42 |
Derivative liabilities | (1) | 115 |
Foreign Exchange Forward [Member] | Fair Value, Inputs, Level 1 [Member] | ||
Derivative assets | 0 | 0 |
Derivative liabilities | 0 | 0 |
Foreign Exchange Forward [Member] | Fair Value, Inputs, Level 2 [Member] | ||
Derivative assets | 18 | 42 |
Derivative liabilities | (1) | 115 |
Foreign Exchange Forward [Member] | Fair Value, Inputs, Level 3 [Member] | ||
Derivative assets | 0 | 0 |
Derivative liabilities | 0 | 0 |
Interest Rate Swap [Member] | ||
Derivative assets | 331 | 326 |
Derivative liabilities | (25) | |
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 | 331 | 326 |
Derivative liabilities | (25) | |
Interest Rate Swap [Member] | Fair Value, Inputs, Level 3 [Member] | ||
Derivative assets | 0 | $ 0 |
Derivative liabilities | $ 0 |
Note 4 - Derivative Instrumen_3
Note 4 - Derivative Instruments and Hedging Activities (Details Textual) € in Millions, $ in Millions, $ in Millions | 6 Months Ended | |||||||
Jun. 30, 2024 USD ($) | Dec. 31, 2024 USD ($) | Jun. 30, 2024 CAD ($) | Jun. 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.3 | |||||||
Reclassified to Interest Expense [Member] | ||||||||
Cash Flow Hedge Gain (Loss) to be Reclassified within 12 Months | $ 0.2 | |||||||
The 1.941% Interest Rate Swap [Member] | ||||||||
Derivative, Fixed Interest Rate | 1.941% | 1.941% | 1.941% | |||||
The 1.941% Interest Rate Swap [Member] | Cash Flow Hedging [Member] | ||||||||
Derivative, Notional Amount | $ 6.7 | |||||||
The 2.96% Interest Rate Swap [Member] | Cash Flow Hedging [Member] | ||||||||
Derivative, Notional Amount | $ 11.5 | 13 | ||||||
Derivative, Fixed Interest Rate | 2.96% | |||||||
The 5.10% Interest Rate Swap [Member] | Cash Flow Hedging [Member] | ||||||||
Derivative, Notional Amount | $ 40 | |||||||
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 | |||||||
Designated as Hedging Instrument [Member] | Foreign Exchange Forward [Member] | ||||||||
Derivative, Notional Amount | $ 2.5 | $ 3.4 | 5.1 | $ 6.7 | ||||
Designated as Hedging Instrument [Member] | Foreign Exchange Forward 1 [Member] | ||||||||
Derivative, Notional Amount | $ 1.1 | € 1.1 | 1.2 | € 1.1 | ||||
Not Designated as Hedging Instrument [Member] | Foreign Exchange Forward [Member] | ||||||||
Derivative, Notional Amount | 4.9 | $ 6.4 | ||||||
Not Designated as Hedging Instrument [Member] | Foreign Exchange Forward 1 [Member] | ||||||||
Derivative, Notional Amount | $ 1.2 | € 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 | 6 Months Ended | ||
Jun. 30, 2024 | Jun. 30, 2023 | Jun. 30, 2024 | Jun. 30, 2023 | |
Gains (losses) recognized on derivatives | $ 88 | $ (202) | $ 308 | $ (413) |
Foreign Exchange Forward [Member] | Sales [Member] | ||||
Gains (losses) recognized on derivatives | 11 | (396) | 111 | (678) |
Foreign Exchange Forward [Member] | Property and Equipment [Member] | ||||
Gains (losses) recognized on derivatives | 0 | 0 | 0 | (87) |
Interest Rate Swap [Member] | Interest Expense [Member] | ||||
Gains (losses) recognized on derivatives | $ 77 | $ 194 | $ 197 | $ 352 |
Note 5 - Stockholders' Equity (
Note 5 - Stockholders' Equity (Details Textual) - USD ($) $ in Thousands | 3 Months Ended | 6 Months Ended | 15 Months Ended | |||
Jun. 30, 2024 | Jun. 30, 2024 | Jun. 30, 2023 | Jun. 30, 2024 | Dec. 01, 2023 | Nov. 02, 2023 | |
Stock Repurchased and Retired During Period, Value | $ 557 | $ 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) | 18,000 | 145,000 | 0 | 0 | ||
Stock Repurchased and Retired During Period, Value | $ 600 | $ 4,300 | ||||
Share Repurchase Program, Remaining Authorized, Amount | $ 24,900 | $ 24,900 | $ 24,900 |
Note 6 - Share-based Compensa_3
Note 6 - Share-based Compensation (Details Textual) $ / shares in Units, $ in Millions | 6 Months Ended | 12 Months Ended | ||||
Jun. 30, 2024 USD ($) $ / shares shares | Jun. 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 | $ | $ 6.1 | |||||
Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition (Year) | 1 year 9 months 18 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 | 6 Months Ended | ||
Jun. 30, 2024 | Jun. 30, 2023 | Jun. 30, 2024 | Jun. 30, 2023 | |
Share-based compensation expense | $ 1,649 | $ 1,314 | $ 2,674 | $ 2,304 |
Cost of Sales [Member] | ||||
Share-based compensation expense | 363 | 266 | 715 | 541 |
Selling, General and Administrative Expenses [Member] | ||||
Share-based compensation expense | $ 1,286 | $ 1,048 | $ 1,959 | $ 1,763 |
Note 6 - Share-based Compensa_5
Note 6 - Share-based Compensation - RSU and PSA Activity (Details) - Restricted Stock Units and Performance Stock Awards [Member] | 6 Months Ended | |
Jun. 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 ($) | Jun. 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.1 | ||
Other Commitment | $ 3.1 | ||
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 Thousands | 3 Months Ended | 6 Months Ended | ||
Jun. 30, 2024 | Jun. 30, 2023 | Jun. 30, 2024 | Jun. 30, 2023 | |
Contract with Customer, Liability, Cumulative Catch-up Adjustment to Revenue, Change in Estimate of Transaction Price | $ 400 | $ (400) | $ 2,300 | $ 0 |
Revenue, Remaining Performance Obligation, Amount | $ 282,000 | $ 282,000 |
Note 8 - Revenue 2 (Details Tex
Note 8 - Revenue 2 (Details Textual) | Jun. 30, 2024 |
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]: 2024-07-01 | |
Revenue, Remaining Performance Obligation, Percentage | 50% |
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Period (Year) | 6 months |
Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]: 2025-01-01 | |
Revenue, Remaining Performance Obligation, Percentage | 34% |
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 | 6 Months Ended | ||
Jun. 30, 2024 | Jun. 30, 2023 | Jun. 30, 2024 | Jun. 30, 2023 | |
Net sales | $ 129,505 | $ 116,372 | $ 242,720 | $ 215,469 |
Transferred over Time [Member] | ||||
Net sales | 89,523 | 77,255 | 169,530 | 140,801 |
Transferred at Point in Time [Member] | ||||
Net sales | $ 39,982 | $ 39,117 | $ 73,190 | $ 74,668 |
Note 8 - Revenue - Contract Wit
Note 8 - Revenue - Contract With Customer Assets and Liabilities (Details) - USD ($) $ in Thousands | 6 Months Ended | |
Jun. 30, 2024 | Jun. 30, 2023 | |
Balance, beginning of period | $ 120,516 | $ 121,778 |
Revenue recognized in advance of billings | 156,976 | 126,071 |
Contract With Customer, Asset, Billings | (139,827) | (124,451) |
Contract With Customer, Asset, Other | 1,816 | (1,039) |
Balance, end of period | 139,481 | 122,359 |
Balance, beginning of period | 21,450 | 17,456 |
Contract With Customer, Liability, Billings | 28,214 | 24,098 |
Revenue recognized | (12,554) | (14,730) |
Contract With Customer, Liability, Other | (5) | 166 |
Balance, end of period | $ 37,105 | $ 26,990 |
Note 9 - Income Taxes (Details
Note 9 - Income Taxes (Details Textual) | 3 Months Ended | 6 Months Ended | ||
Jun. 30, 2024 | Jun. 30, 2023 | Jun. 30, 2024 | Jun. 30, 2023 | |
Open Tax Year | 2019 2020 2021 2022 2023 2024 | |||
Effective Income Tax Rate Reconciliation, Percent | 25.50% | 26.50% | 26.30% | 27.10% |
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 | 6 Months Ended | ||
Jun. 30, 2024 | Jun. 30, 2023 | Jun. 30, 2024 | Jun. 30, 2023 | |
Balance | $ 342,614 | $ 321,077 | $ 340,360 | $ 318,274 |
Net current period other comprehensive income (loss) | (13) | (8) | 42 | (135) |
Balance | 351,183 | 328,601 | 351,183 | 328,601 |
Accumulated Defined Benefit Plans Adjustment Attributable to Parent [Member] | ||||
Balance | (1,193) | (1,532) | ||
Other comprehensive income before reclassifications | 38 | 53 | ||
Amounts reclassified from Accumulated other comprehensive loss | 6 | 6 | ||
Net current period other comprehensive income (loss) | 44 | 59 | ||
Balance | (1,149) | (1,473) | (1,149) | (1,473) |
Accumulated Gain (Loss), Net, Cash Flow Hedge, Parent [Member] | Foreign Exchange Forward [Member] | ||||
Balance | (13) | 94 | ||
Other comprehensive income before reclassifications | 11 | (109) | ||
Amounts reclassified from Accumulated other comprehensive loss | 2 | 8 | ||
Net current period other comprehensive income (loss) | 13 | (101) | ||
Balance | 0 | (7) | 0 | (7) |
Accumulated Gain (Loss), Net, Cash Flow Hedge, Parent [Member] | Interest Rate Swap [Member] | ||||
Balance | 246 | 649 | ||
Other comprehensive income before reclassifications | 134 | 173 | ||
Amounts reclassified from Accumulated other comprehensive loss | (149) | (266) | ||
Net current period other comprehensive income (loss) | (15) | (93) | ||
Balance | 231 | 556 | 231 | 556 |
AOCI Attributable to Parent [Member] | ||||
Balance | (905) | (916) | (960) | (789) |
Other comprehensive income before reclassifications | 183 | 117 | ||
Amounts reclassified from Accumulated other comprehensive loss | (141) | (252) | ||
Net current period other comprehensive income (loss) | 42 | (135) | ||
Balance | $ (918) | $ (924) | $ (918) | $ (924) |
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 | 6 Months Ended | ||
Jun. 30, 2024 | Jun. 30, 2023 | Jun. 30, 2024 | Jun. 30, 2023 | |
Cost of sales | $ 103,691 | $ 93,891 | $ 196,772 | $ 176,411 |
Net income | 8,619 | 7,448 | 13,857 | 9,810 |
Net sales | 129,505 | 116,372 | 242,720 | 215,469 |
Tax (expense) benefit | (2,949) | (2,692) | (4,934) | (3,643) |
Gain on cash flow hedges | 1,823 | 1,191 | 3,297 | 2,560 |
Reclassification out of Accumulated Other Comprehensive Income [Member] | ||||
Net income | 55 | 168 | 141 | 252 |
Reclassification out of Accumulated Other Comprehensive Income [Member] | Accumulated Defined Benefit Plans Adjustment Attributable to Parent [Member] | ||||
Cost of sales | (3) | (3) | (6) | (6) |
Net income | (3) | (3) | (6) | (6) |
Tax (expense) benefit | 1 | (9) | 1 | 2 |
Reclassification out of Accumulated Other Comprehensive Income [Member] | Accumulated Gain (Loss), Net, Cash Flow Hedge, Parent [Member] | Foreign Exchange Forward [Member] | ||||
Net income | 0 | 24 | (2) | (8) |
Net sales | (1) | 33 | (3) | 77 |
Property and equipment | 0 | 0 | 0 | (87) |
Reclassification out of Accumulated Other Comprehensive Income [Member] | Accumulated Gain (Loss), Net, Cash Flow Hedge, Parent [Member] | Interest Rate Swap [Member] | ||||
Net income | 58 | 147 | 149 | 266 |
Tax (expense) benefit | (19) | (47) | (48) | (86) |
Gain on cash flow hedges | $ 77 | $ 194 | $ 197 | $ 352 |
Note 11 - Net Income Per Shar_2
Note 11 - Net Income Per Share (Details Textual) - shares | 3 Months Ended | 6 Months Ended | ||
Jun. 30, 2024 | Jun. 30, 2023 | Jun. 30, 2024 | Jun. 30, 2023 | |
Antidilutive Securities Excluded from Computation of Earnings Per Share, Amount (in shares) | 0 | 0 | 15,700 | 0 |
Note 11 - Net Income Per Shar_3
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 | 6 Months Ended | |||
Jun. 30, 2024 | Jun. 30, 2023 | Jun. 30, 2024 | Jun. 30, 2023 | ||
Net income | $ 8,619 | $ 7,448 | $ 13,857 | $ 9,810 | |
Basic (in shares) | 9,912 | 10,000 | 9,914 | 9,970 | |
Effect of potentially dilutive common shares (in shares) | [1] | 83 | 66 | 111 | 111 |
Diluted weighted-average common shares outstanding (in shares) | 9,995 | 10,066 | 10,025 | 10,081 | |
Basic (in dollars per share) | $ 0.87 | $ 0.74 | $ 1.4 | $ 0.98 | |
Diluted (in dollars per share) | $ 0.86 | $ 0.74 | $ 1.38 | $ 0.97 | |
[1]The weighted-average number of antidilutive shares not included in the computation of diluted net income per share was approximately 15,700 for the six months ended June 30, 2024. There were no antidilutive shares for the three months ended June 30, 2024 and the three and six months ended June 30, 2023. |
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 | 6 Months Ended | ||
Jun. 30, 2024 | Jun. 30, 2023 | Jun. 30, 2024 | Jun. 30, 2023 | |
Net sales | $ 129,505 | $ 116,372 | $ 242,720 | $ 215,469 |
Gross profit | 25,814 | 22,481 | 45,948 | 39,058 |
Operating Segments [Member] | ||||
Net sales | 129,505 | 116,372 | 242,720 | 215,469 |
Gross profit | 25,814 | 22,481 | 45,948 | 39,058 |
Operating Segments [Member] | Engineered Steel Pressure Pipe [Member] | ||||
Net sales | 89,523 | 77,255 | 169,530 | 140,801 |
Gross profit | 16,981 | 12,571 | 31,223 | 20,353 |
Operating Segments [Member] | Precast Infrastructure and Engineered Systems [Member] | ||||
Net sales | 39,982 | 39,117 | 73,190 | 74,668 |
Gross profit | $ 8,833 | $ 9,910 | $ 14,725 | $ 18,705 |