
| Line item | FY2025 | FY2024 | FY2023 | FY2022 | FY2021 | FY2020 | FY2019 | FY2018 | FY2017 | FY2016 | FY2015 | FY2014 | FY2013 | FY2012 | FY2011 | FY2010 | FY2009 | FY2008 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Valuation | ||||||||||||||||||
| Market cap | $75,860 | $58,575 | $49,192 | $47,792 | $85,123 | $60,455 | $53,138 | $48,565 | $59,512 | $50,583 | $49,378 | $56,031 | $56,932 | $45,148 | $31,135 | $55,290 | – | – |
| Enterprise value | $180,517 | $164,649 | $149,277 | $136,290 | $172,909 | $146,927 | $138,394 | $130,623 | $131,105 | $101,530 | $89,540 | $75,087 | $64,689 | $35,582 | $12,642 | $40,216 | – | – |
| P/E (TTM) at period end | 23.86× | 8.15× | 4.91× | 5.36× | 8.65× | 9.68× | 8.07× | 6.14× | – | 5.37× | 5.10× | 19.98× | 15.10× | 9.29× | 4.10× | 11.84× | – | – |
| P/S (TTM) at period end | 0.41× | 0.31× | 0.29× | 0.30× | 0.67× | 0.49× | 0.39× | 0.33× | 0.41× | 0.34× | 0.36× | 0.36× | 0.37× | 0.30× | 0.21× | 0.41× | – | – |
| P/B at period end | 1.24× | 0.93× | 0.77× | 0.70× | 1.42× | 1.34× | 1.27× | 1.25× | 1.70× | 1.15× | 1.24× | 1.58× | 1.34× | 1.25× | 0.82× | 1.53× | – | – |
| EV / EBITDA (TTM) | 12.12× | 6.79× | 7.10× | 6.31× | 8.09× | 7.61× | 7.08× | 7.43× | 6.36× | 5.53× | 7.28× | 8.56× | 4.91× | 4.24× | 0.97× | 3.34× | – | – |
| EV / Sales (TTM) | 0.98× | 0.88× | 0.87× | 0.87× | 1.36× | 1.20× | 1.01× | 0.89× | 0.90× | 0.68× | 0.66× | 0.48× | 0.42× | 0.23× | 0.08× | 0.30× | – | – |
| Returns | ||||||||||||||||||
| Return on equity | 5.2% | 11.4% | 15.6% | 13.2% | 16.5% | 13.9% | 15.7% | 20.4% | (11.1%) | 21.5% | 24.3% | 7.9% | 8.8% | 13.4% | 19.9% | 12.9% | 493.3% | – |
| Return on invested capital | 1.5% | 5.1% | 5.1% | 5.1% | 4.7% | 3.7% | 3.7% | 3.3% | 0.2% | 6.3% | 6.3% | 2.3% | 6.2% | – | 15.8% | 16.9% | (100.8%) | – |
| Dividend yield | 0.9% | 1.1% | 1.2% | 0.8% | 0.2% | 1.1% | 4.4% | 4.6% | 3.8% | 4.7% | 4.5% | 3.4% | 3.0% | 2.1% | 2.9% | 2.8% | – | – |
| Financial health | ||||||||||||||||||
| Current ratio | 1.17× | 1.13× | 1.08× | 1.10× | 1.10× | 1.01× | 0.88× | 0.92× | 0.89× | 0.89× | 0.97× | 1.27× | 1.31× | 1.30× | 1.22× | 1.13× | 1.13× | 0.59× |
| Debt / equity | 2.13× | 2.06× | 1.89× | 1.69× | 1.83× | 2.44× | 2.47× | 2.70× | 2.69× | 1.71× | 1.58× | 1.32× | 0.85× | 0.44× | 0.36× | 0.32× | 0.74× | (0.54×) |
| Effective tax rate | 10.8% | 30.0% | 5.4% | 16.3% | 21.8% | 21.9% | 10.3% | 5.5% | 97.2% | 22.8% | (14.6%) | 5.4% | 28.5% | 115.1% | (1.8%) | 11.7% | (2.1%) | (6.0%) |
| Share count | ||||||||||||||||||
| Diluted shares outstanding | 973 | 1,129 | 1,369 | 1,454 | 1,468 | 1,442 | 1,439 | 1,431 | 1,492 | 1,570 | 1,640 | 1,687 | 1,676 | 1,675 | 1,668 | 1,624 | 925 | 579 |
| Line item | TTM | FY2025 | FY2024 | FY2023 | FY2022 | FY2021 | FY2020 | FY2019 | FY2018 | FY2017 | FY2016 | FY2015 | FY2014 | FY2013 | FY2012 | FY2011 | FY2010 | FY2009 | FY2008 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Revenue and gross profit | |||||||||||||||||||
| Revenue | $186,952 | $185,019 | $187,442 | $171,842 | $156,735 | $127,004 | $122,485 | $137,237 | $147,049 | $145,588 | $149,184 | $135,725 | $155,929 | $155,427 | $152,256 | $150,276 | $135,592 | $105,810 | $148,781 |
| Cost of revenue | – | ($164,923) | ($154,837) | ($142,804) | ($126,892) | ($100,544) | ($97,539) | ($110,651) | ($120,656) | ($116,229) | ($121,784) | ($112,995) | ($138,082) | ($134,925) | ($140,236) | ($130,386) | ($118,768) | ($102,590) | ($136,933) |
| Gross profit | – | $20,096 | $32,605 | $29,038 | $29,843 | $26,460 | $24,946 | $26,586 | $26,393 | $29,359 | $27,400 | $22,730 | $17,847 | $20,502 | $12,020 | $19,890 | $16,824 | $3,220 | $11,848 |
| Operating expenses | |||||||||||||||||||
| Research and development | – | ($8,500) | ($9,200) | ($9,900) | ($9,800) | ($7,900) | ($6,200) | ($6,800) | ($7,800) | ($7,300) | ($6,600) | ($7,500) | ($7,400) | ($7,200) | ($7,400) | ($8,100) | ($6,962) | ($6,051) | ($8,000) |
| Selling, general and administrative | ($8,819) | ($8,687) | ($10,621) | ($9,840) | ($10,667) | ($8,554) | ($7,038) | ($8,491) | ($9,650) | ($9,570) | ($10,345) | ($11,888) | ($12,158) | ($12,382) | ($14,031) | ($12,163) | ($11,446) | ($12,167) | ($13,794) |
| Total operating expenses | ($48,942) | ($17,187) | ($19,821) | ($19,740) | ($19,528) | ($17,136) | ($18,312) | ($21,105) | ($21,948) | ($20,698) | ($18,714) | ($17,192) | ($16,317) | ($15,371) | ($42,383) | ($14,234) | ($11,716) | ($18,397) | ($26,591) |
| Total costs and expenses | ($182,615) | ($182,110) | ($174,658) | ($162,544) | ($146,420) | ($117,680) | ($115,851) | ($131,756) | ($142,604) | ($136,927) | ($140,498) | ($130,187) | ($154,399) | ($150,296) | ($182,619) | ($144,620) | ($130,484) | ($120,987) | ($163,524) |
| Operating income | $4,337 | $2,909 | $12,784 | $9,298 | $10,315 | $9,324 | $6,634 | $5,481 | $4,445 | $8,661 | $8,686 | $5,538 | $1,530 | $5,131 | ($30,363) | $5,656 | $5,108 | ($15,177) | ($14,743) |
| Earnings | |||||||||||||||||||
| EBITDA | $16,333 | $14,889 | $24,240 | $21,035 | $21,591 | $21,371 | $19,310 | $19,541 | $17,587 | $20,628 | $18,372 | $12,291 | $8,768 | $13,172 | $8,399 | $13,083 | $12,038 | ($3,793) | ($4,540) |
| Interest income | $2,339 | $1,535 | $1,257 | $1,537 | $460 | $146 | $1,885 | $1,469 | $2,596 | $1,645 | $1,603 | $614 | $211 | $246 | $343 | $455 | $465 | $367 | $712 |
| Interest expense | ($638) | ($727) | ($846) | ($911) | ($987) | ($950) | ($4,121) | ($4,423) | ($3,880) | ($3,141) | ($2,535) | ($1,883) | ($1,829) | ($1,049) | ($772) | ($744) | ($1,135) | ($6,112) | ($2,624) |
| Pre-tax income | $4,609 | $3,117 | $8,519 | $10,403 | $11,597 | $12,716 | $8,095 | $7,436 | $8,549 | $11,863 | $12,008 | $8,371 | $4,246 | $7,458 | ($30,257) | $5,985 | $5,737 | $103,051 | ($29,202) |
| Income tax expense | ($433) | ($338) | ($2,556) | ($563) | ($1,888) | ($2,771) | ($1,774) | ($769) | ($474) | ($11,533) | ($2,739) | $1,219 | ($228) | ($2,127) | $34,831 | $110 | ($672) | $2,166 | ($1,766) |
| Net income | $3,957 | $2,697 | $6,008 | $10,127 | $9,934 | $10,019 | $6,427 | $6,732 | $8,014 | ($3,864) | $9,427 | $9,687 | $3,949 | $5,346 | $6,188 | $9,190 | $6,172 | $104,821 | ($30,860) |
| Per share | |||||||||||||||||||
| Diluted EPS (GAAP) | $4.36 | $3.27 | $6.37 | $7.32 | $6.13 | $6.70 | $4.33 | $4.57 | $5.53 | ($2.60) | $6.00 | $5.91 | $1.65 | $2.38 | $2.92 | $4.58 | $2.89 | $113.18 | ($53.44) |
| Basic EPS (GAAP) | $4.50 | $3.33 | $6.45 | $7.35 | $6.17 | $6.78 | $4.36 | $4.62 | $5.61 | ($2.65) | $6.12 | $6.11 | $1.75 | $2.71 | $3.10 | $4.94 | $3.11 | $113.18 | ($53.44) |
| Basic shares outstanding | 900 | 955 | 1,115 | 1,364 | 1,445 | 1,451 | 1,433 | 1,424 | 1,411 | 1,465 | 1,540 | 1,586 | 1,605 | 1,393 | 1,566 | 1,536 | 1,500 | 925 | 579 |
| Margins | |||||||||||||||||||
| Gross margin | – | 10.9% | 17.4% | 16.9% | 19.0% | 20.8% | 20.4% | 19.4% | 17.9% | 20.2% | 18.4% | 16.7% | 11.4% | 13.2% | 7.9% | 13.2% | 12.4% | 3.0% | 8.0% |
| Operating margin | 2.3% | 1.6% | 6.8% | 5.4% | 6.6% | 7.3% | 5.4% | 4.0% | 3.0% | 5.9% | 5.8% | 4.1% | 1.0% | 3.3% | (19.9%) | 3.8% | 3.8% | (14.3%) | (9.9%) |
| Net margin | 2.1% | 1.5% | 3.2% | 5.9% | 6.3% | 7.9% | 5.2% | 4.9% | 5.4% | (2.7%) | 6.3% | 7.1% | 2.5% | 3.4% | 4.1% | 6.1% | 4.6% | 99.1% | (20.7%) |