XML 15 R4.htm IDEA: XBRL DOCUMENT v3.25.2
UNAUDITED CONSOLIDATED STATEMENTS OF OPERATIONS AND COMPREHENSIVE INCOME - USD ($)
shares in Thousands, $ in Thousands
3 Months Ended 6 Months Ended
Jun. 30, 2025
Jun. 30, 2024
Jun. 30, 2025
Jun. 30, 2024
Income Statement [Abstract]        
Contract revenues $ 900,325 $ 828,890 $ 1,733,945 $ 1,644,452
Contract costs 796,614 788,047 1,533,333 1,517,366
Gross profit 103,711 40,843 200,612 127,086
Selling, general and administrative expenses 63,313 61,839 125,837 124,072
Amortization of intangible assets 1,211 1,217 2,399 2,445
Gain on sale of property and equipment (600) (1,506) (1,701) (2,995)
Income (loss) from operations 39,787 (20,707) 74,077 3,564
Other income (expense):        
Interest income 45 81 236 223
Interest expense (1,905) (1,241) (3,319) (2,295)
Other expense, net (533) (270) (833) (533)
Income (loss) before provision for income taxes 37,394 (22,137) 70,161 959
Income tax expense (benefit) 10,928 (6,860) 20,387 (2,703)
Net income (loss) $ 26,466 $ (15,277) $ 49,774 $ 3,662
Income (loss) per common share:        
Basic (in dollars per share) $ 1.70 $ (0.91) $ 3.16 $ 0.22
Diluted (in dollars per share) $ 1.70 $ (0.91) $ 3.15 $ 0.22
Weighted average number of common shares and potential common shares outstanding:        
Basic (in shares) 15,527 16,756 15,759 16,734
Diluted (in shares) 15,575 16,809 15,813 16,820
Net income (loss) $ 26,466 $ (15,277) $ 49,774 $ 3,662
Other comprehensive income (loss):        
Foreign currency translation adjustment 4,872 (1,173) 4,994 (3,645)
Other comprehensive income (loss) 4,872 (1,173) 4,994 (3,645)
Total comprehensive income (loss) $ 31,338 $ (16,450) $ 54,768 $ 17