Hollow marker is the consensus estimate; filled is the reported figure, colored by beat or miss.
Outlined bar is the consensus estimate; solid is reported.
Periods without a consensus estimate or a reported figure show a dash.
| Period | EPS estimate | EPS actual | EPS surprise % | Revenue estimate | Revenue actual | Revenue surprise % |
|---|---|---|---|---|---|---|
| Q1 23 | — | $0.05 | — | — | $46.3M | — |
| Q4 22 | — | -$0.04 | — | — | — | — |
| Q3 22 | — | -$0.09 | — | — | — | — |
| Q2 22 | — | $0.13 | — | — | — | — |
| Q1 22 | — | $0.12 | — | — | — | — |
| Q4 21 | — | -$0.05 | — | — | — | — |
| Q3 21 | — | $0.14 | — | — | — | — |
| Q2 21 | — | -$0.03 | — | — | — | — |
| Q1 21 | — | $0.54 | — | — | — | — |
| Q4 20 | — | $0.09 | — | — | — | — |
| Q3 20 | — | $0.3 | — | — | — | — |
| Q2 20 | — | -$0.1 | — | — | — | — |
| Q1 20 | — | $0.06 | — | — | — | — |
| Q4 19 | — | -$0.07 | — | — | — | — |
| Q3 19 | — | $0.22 | — | — | — | — |
| Q2 19 | — | $0.19 | — | — | — | — |
Reported per-share earnings by fiscal year; the line turns dotted where reported figures end and the analyst consensus begins, with the shaded band marking the low–high range.
Reported revenue by fiscal year; the line turns dotted where reported figures end and the analyst consensus begins, with the shaded band marking the low–high range.
Periods without a consensus estimate or a reported figure show a dash.
| Period | EPS estimate | EPS actual | EPS surprise % | Revenue estimate | Revenue actual | Revenue surprise % |
|---|---|---|---|---|---|---|
| FY24 | — | -$0.23 | — | — | $188.2M | — |
| FY23 | — | -$0.03 | — | — | — | — |
| FY22 | — | $0.06 | — | — | $187.9M | — |
| FY21 | — | $0.19 | — | — | $199.6M | — |
| FY20 |
Reported revenue per period; the line is the change from the same period a year earlier, on its own left axis.
| Period | FY15 | FY16 | FY17 | FY18 | FY19 | FY20 | FY21 | FY22 | FY23 | FY24 |
|---|---|---|---|---|---|---|---|---|---|---|
| Revenue | $165.9M | $166.1M | $181.1M | $185.6M | $198.2M | $195.3M | $199.6M | $187.9M | — | $188.2M |
| YoY change | -0.23% | +0.08% | +9.05% | +2.45% | +6.8% | -1.43% | +2.15% | -5.86% | — | — |
Reported revenue per period; the line is the change from the same period a year earlier, on its own left axis.
Revenue, gross profit, operating income, and net income per period.
Click a row to chart it; unreported figures show a dash.
| Period | FY15 | FY16 | FY17 | FY18 | FY19 | FY20 | FY21 | FY22 | FY23 | FY24 |
|---|---|---|---|---|---|---|---|---|---|---|
| Revenue | 165.9M | 166.1M | 181.1M | 185.6M | 198.2M | 195.3M | 199.6M | 187.9M | — | 188.2M |
| Cost of revenue | — | — | — | — | — | — | — | — | — | — |
| Gross profit | — | — | — | — | — | — | — | — | — | — |
| Gross margin | — | — | — | — | — | — | — | — | — | — |
| Research & development | — | — | — | — | — | — | — | — | — | — |
| Selling, general & administrative | — | — | — | — | — | — | — | — | — | — |
| Operating expenses | 14.2M | 13M | 13.1M | 12.8M | 11.8M | 11.5M | 13.7M | 13.6M | — | 16.2M |
| Operating income | 5.7M | 3.5M | — | — | — | — | — | — | — | — |
| Operating margin | 3.44% | 2.12% | — | — | — | — | — | — | — | — |
| Non-operating income, net | 103K | 133K | 123K | 113K | 190K | 76K | 13K | 11K | — | 11K |
| Pretax income | 5.7M | 3.5M | 5.4M | -971K | -407K | 15.5M | 5.3M | 2.1M | — | -5.3M |
| Income tax | 1.3M | 888K | 828K | -267K | -21K | 3.3M | 1M | 571K | — | -996K |
| Net income | 4.4M | 2.6M | 4.5M | -704K | -386K | 12.2M | 4.3M | 1.5M | — | -4.3M |
| Net margin | 2.64% | 1.59% | 2.5% | -0.38% | -0.19% | 6.23% | 2.15% | 0.81% | — | -2.27% |
| EBITDA | — | — | — | — | — | — | — | — | — | — |
| EPS | 0.19 | 0.11 | 0.2 | -0.05 | -0.04 | 0.58 | 0.19 | 0.06 | -0.03 | -0.23 |
| Diluted EPS | 0.19 | 0.11 | 0.2 | -0.05 | -0.04 | 0.56 | 0.19 | 0.06 | -0.03 | -0.23 |
Revenue, gross profit, operating income, and net income per period.
Click a row to chart it; unreported figures show a dash.
| Period | Q3 22 | Q4 22 | Q1 23 | Q2 23 | Q3 23 | Q1 24 | Q2 24 | Q3 24 | Q4 24 | Q1 25 | Q2 25 | Q3 25 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Revenue | 46.3M | 45.2M | 46.3M | 49.2M | — | — | — | — | 49M | 50.1M | 55.3M | 53.8M |
| Cost of revenue | — | — | — | — | — | — | — | — | — | — | — | — |
| Gross profit | — | — | — | — | — | — | — | — | — | — | — | — |
| Gross margin | — | — | — | — | — | — | — | — | — | — | — | — |
| Research & development | — | — | — | — | — | — | — | — | — | — | — | — |
| Selling, general & administrative | — | — | — | — | — | — | — | — | — | — | — | — |
| Operating expenses | 3.3M | 3.5M | 4M | 4M | — | — | — | — | 4M | 4.7M | 3.8M | 3.8M |
| Operating income | — | — | — | — | — | — | — | — | — | — | — | — |
| Operating margin | — | — | — | — | — | — | — | — | — | — | — | — |
| Non-operating income, net | 4K | 0 | 3K | 5K | — | — | — | — | 3K | 3K | 3K | 1K |
| Pretax income | -949K | 1.4M | -1.8M | 2.2M | — | — | — | — | 545K | 1M | 4.2M | 769K |
| Income tax | -265K | 318K | -372K | 473K | — | — | — | — | 133K | 233K | 900K | 192K |
| Net income | -684K | 1M | -1.4M | 1.7M | — | — | — | — | 412K | 802K | 3.3M | 577K |
| Net margin | -1.48% | 2.31% | -3.13% | 3.55% | — | — | — | — | 0.84% | 1.6% | 6% | 1.07% |
| EBITDA | — | — | — | — | — | — | — | — | — | — | — | — |
| EPS | -0.04 | — | -0.08 | 0.08 | 0.08 | -0.1 | -0.04 | -0.1 | 0.02 | 0.03 | 0.16 | 0.02 |
| Diluted EPS | -0.04 | — | -0.08 | 0.08 | 0.08 | -0.1 | -0.04 | -0.1 | 0.02 | 0.03 | 0.15 | 0.02 |
Annual history by fiscal year; click a table row below to chart a different metric.
Current values are trailing twelve months where available, otherwise the latest fiscal year; unreported figures show a dash.
| Metric | FY15 | FY16 | FY17 | FY18 | FY19 | FY20 | FY21 | FY22 | FY23 | FY24 | Current |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Market cap | — | — | — | — | — | — | — | — | — | — | 26.7M |
| Enterprise value | — | — | — | — | — | — | — | — | — | — | 35M |
| Shares outstanding | 23.1M | 24M | 22.6M | 20.3M | 20.5M | 21M | 22.5M | 20.4M | 20.4M | 18.6M | 18.6M |
| Metric | FY15 | FY16 | FY17 | FY18 | FY19 | FY20 | FY21 | FY22 | FY23 | FY24 | Current |
|---|---|---|---|---|---|---|---|---|---|---|---|
| P/E | — | — | — | — | — | — | — | — | — | — | 5.7 |
| P/S | — | — | — | — | — | — | — | — | — | — | 0.13 |
| P/B | — | — | — | — | — | — | — | — | — | — | 0.24 |
| EV/EBITDA | — | — | — | — | — | — | — | — | — | — | 3.48 |
| EV/Sales | — | — | — | — | — | — | — | — | — | — | 0.17 |
| Earnings yield | — | — | — | — | — | — | — | — | — | — | 17.6% |
| FCF yield | — | — | — | — | — | — | — | — | — | — | 82.7% |
| PEG | — | — | — | — | — | — | — | — | — | — | -0.05 |
| Metric | FY15 | FY16 | FY17 | FY18 | FY19 | FY20 | FY21 | FY22 | FY23 | FY24 | Current |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Operating margin | 3.44% | 2.12% | — | — | — | — | — | — | — | — | 2.88% |
| Net margin | 2.64% | 1.59% | 2.5% | -0.38% | -0.19% | 6.23% | 2.15% | 0.81% | — | -2.27% | 2.45% |
| ROE | 4.28% | 2.5% | 4.01% | -0.69% | -0.33% | 8.39% | 3.03% | 1.49% | — | -4.28% | 4.75% |
| ROA | — | — | — | — | — | — | — | — | — | -1.08% | 1.49% |
| ROIC | 3.64% | 2.09% | — | — | — | — | — | — | — | — | — |
| Return on tangible assets | — | — | — | — | — | — | — | — | — | -1.09% | 1.19% |
| Metric | FY15 | FY16 | FY17 | FY18 | FY19 | FY20 | FY21 | FY22 | FY23 | FY24 | Current |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Current ratio | — | — | — | — | — | — | — | — | — | — | 1.5 |
| Debt / equity | 0.33 | 0.32 | 0.3 | 0.33 | 0.28 | 0.23 | 0.24 | 0.35 | — | 0.38 | 0.39 |
| Debt / assets | — | — | — | — | — | — | — | — | — | 0.1 | 0.09 |
| Net debt / EBITDA | — | — | — | — | — | — | — | — | — | — | 0.82 |
| Interest coverage | 4.99 | 3.26 | 4.11 | 0.52 | 0.81 | 10.6 | 4.82 | 2.07 | — | -0.54 | 3.08 |
| Effective tax rate | 23.1% | 25.2% | 15.5% | 0% | 0% | 21.5% | 19.3% | 27.2% | — | 0% | 22.2% |
| Metric | FY15 | FY16 | FY17 | FY18 | FY19 | FY20 | FY21 | FY22 | FY23 | FY24 | Current |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Revenue per share | 7.19 | 6.93 | 8 | 9.15 | 9.68 | 9.31 | 8.86 | 9.21 | — | 10.1 | 10.2 |
| EPS (basic) | 0.19 | 0.11 | 0.2 | -0.05 | -0.04 | 0.58 | 0.19 | 0.06 | -0.03 | -0.23 | -0.23 |
| EPS (diluted) | 0.19 | 0.11 | 0.2 | -0.05 | -0.04 | 0.56 | 0.19 | 0.06 | -0.03 | -0.23 | 0.23 |
| Book value per share | 4.44 | 4.4 | 4.99 | 5 | 5.78 | 6.91 | 6.27 | 5.01 | — | 5.37 | 5.37 |
| FCF per share | 0.08 | 0.04 | 0.53 | 0.21 | -0.09 | 0.42 | 0.04 | 0.31 | — | 0.25 | 1.19 |
| Cash per share | 0.68 | 0.55 | 10.6 | 11 | 12 | 13 | 12.7 | 11.7 | — | 3.9 | 1.69 |
| Capex per share | 0.01 | 0.02 | 0 | 0.01 | 0 | 0.01 | 0 | 0.01 | — | — | — |
| Metric | FY15 | FY16 | FY17 | FY18 | FY19 | FY20 | FY21 | FY22 | FY23 | FY24 | Current |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Capex / revenue | 0.19% | 0.24% | 0.06% | 0.15% | 0.03% | 0.12% | 0.05% | 0.07% | — | — | — |
| Capex / operating cash flow | -8.89% | -4.65% | -0.62% | -0.75% | -0.23% | -3.58% | -0.54% | -0.55% | — | — | — |
| Payout ratio | 18.5% | 30.6% | 17.8% | -114.5% | -207.8% | 3.28% | 18.9% | 52.9% | — | -18.9% | 8.7% |
| Dividend yield | — | — | — | — | — | — | — | — | — | — | 6.2% |
Split-adjusted payout per share by ex-dividend date.
| Ex-dividend | Amount |
|---|---|
| Apr 9, 2025 | $0.02 |
| Apr 11, 2024 | $0.02 |
| Aug 21, 2023 | $0.02 |
| Apr 12, 2022 | $0.02 |
| Apr 12, 2021 | $0.02 |
| Apr 9, 2019 | $0.02 |
| Apr 12, 2018 | $0.02 |
| Apr 11, 2017 | $0.02 |
| Date | Ratio |
|---|---|
| Nov 4, 1986 | 5:4 |
| Nov 4, 1985 |
| — |
| $0.58 |
| — |
| — |
| $195.3M |
| — |
| FY19 | — | -$0.04 | — | — | $198.2M | — |
| FY18 | — | -$0.05 | — | — | $185.6M | — |
| FY17 | — | $0.2 | — | — | $181.1M | — |
| FY16 | — | $0.11 | — | — | $166.1M | — |
| FY15 | — | $0.19 | — | — | $165.9M | — |
| Period | Q3 22 | Q4 22 | Q1 23 | Q2 23 | Q3 23 | Q1 24 | Q2 24 | Q3 24 | Q4 24 | Q1 25 | Q2 25 | Q3 25 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Revenue | $46.3M | $45.2M | $46.3M | $49.2M | — | — | — | — | $49M | $50.1M | $55.3M | $53.8M |
| YoY change | -5.98% | -9.05% | -10.3% | +10.1% | — | — | — | — | — | — | — | — |
What the company owns (left stack) against what it owes plus shareholders' equity (right stack). The two stacks should match — that's the balance.
Click a row to chart it; unreported figures show a dash.
| Period | FY14 | FY15 | FY16 | FY17 | FY18 | FY19 | FY20 | FY21 | FY22 | FY24 |
|---|---|---|---|---|---|---|---|---|---|---|
| Cash & short-term investments | 16.4M | 15.6M | 13.3M | 239.7M | 223M | 245.4M | 273.4M | 285.7M | 237.6M | 72.4M |
| Receivables | 25.1M | 23.7M | 24.3M | 30.9M | 41.3M | 45.3M | 56.6M | 42.4M | 41.3M | 50.4M |
| Inventory | — | — | — | — | — | — | — | — | — | — |
| Total current assets | — | — | — | — | — | — | — | — | — | — |
| Property, plant & equipment | — | — | — | — | — | — | — | — | — | — |
| Goodwill & intangibles | 5.1M | 5.1M | 5.1M | 5.1M | 5.1M | 2.5M | 2.5M | 2.5M | 2.5M | 2.5M |
| Total assets | — | — | — | — | — | — | — | — | — | 393.4M |
| Accounts payable | — | — | — | — | — | — | — | — | — | — |
| Short-term debt | — | — | — | — | — | — | — | 0 | 2M | 4M |
| Total current liabilities | — | — | — | — | — | — | — | — | — | — |
| Long-term debt | 33.7M | 33.7M | 33.7M | 33.7M | 33.7M | 33.7M | 33.7M | 33.7M | 33.7M | 33.7M |
| Total liabilities | — | — | — | — | — | — | — | — | — | 293.8M |
| Shareholders' equity | 104.2M | 102.5M | 105.5M | 113M | 101.4M | 118.4M | 145.1M | 141.3M | 102.2M | 99.6M |
| Total debt | 33.7M | 33.7M | 33.7M | 33.7M | 33.7M | 33.7M | 33.7M | 33.7M | 35.7M | 37.8M |
| Net debt | 17.4M | 18.1M | 20.5M | 9.2M | 21.1M | 20.8M | 14.4M | 9M | 6.9M | 2.2M |
What the company owns (left stack) against what it owes plus shareholders' equity (right stack). The two stacks should match — that's the balance.
Click a row to chart it; unreported figures show a dash.
| Period | Q3 22 | Q4 22 | Q1 23 | Q2 23 | Q3 23 | Q1 24 | Q2 24 | Q3 24 | Q4 24 | Q1 25 | Q2 25 | Q3 25 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Cash & short-term investments | 224.2M | 237.6M | 231.6M | 232.7M | 58.3M | 62.3M | 61.6M | 63.7M | 72.4M | 67.3M | 84.3M | 79.2M |
| Receivables | 47.2M | 41.3M | 36.5M | 53.1M | 46.5M | 35.6M | 56.7M | 52.1M | 50.4M | 43M | 72.6M | 65.1M |
| Inventory | — | — | — | — | — | — | — | — | — | — | — | — |
| Total current assets | — | — | — | — | — | — | — | — | — | — | — | — |
| Property, plant & equipment | — | — | — | — | — | — | — | — | — | — | — | — |
| Goodwill & intangibles | 2.5M | 2.5M | 2.5M | 2.5M | 2.5M | 2.5M | 2.5M | 2.5M | 2.5M | 2.5M | 2.5M | 2.5M |
| Total assets | — | — | — | — | — | 365.8M | 386M | 387M | 393.4M | 388.4M | 429.3M | 430.9M |
| Accounts payable | — | — | — | — | — | — | — | — | — | — | — | — |
| Short-term debt | 1M | 2M | 3M | 3M | 3M | 4M | 4M | 4M | 4M | 4M | 4M | 4M |
| Total current liabilities | — | — | — | — | — | — | — | — | — | — | — | — |
| Long-term debt | 33.7M | 33.7M | 33.7M | 33.7M | 33.7M | 33.7M | 33.7M | 33.7M | 33.7M | 33.7M | 33.7M | 33.7M |
| Total liabilities | — | — | — | — | — | 262.9M | 285.3M | 281.2M | 293.8M | 286.1M | 323.2M | 321.4M |
| Shareholders' equity | 97.9M | 102.2M | 104.4M | 103.5M | 98.7M | 102.8M | 100.7M | 105.8M | 99.6M | 102.4M | 106.2M | 109.5M |
| Total debt | 34.7M | 35.7M | 36.7M | 36.7M | 36.8M | 37.8M | 37.8M | 37.8M | 37.8M | 37.8M | 37.8M | 37.8M |
| Net debt | 12.9M | 6.9M | 23.2M | 12.5M | 12.8M | 16.6M | 16.5M | 14.7M | 2.2M | 1.9M | -8.7M | 3.3M |
Cash from operations, what's left after capex, and what went back to shareholders. Bars below the line are cash going out.
Click a row to chart it; unreported figures show a dash.
| Period | FY15 | FY16 | FY17 | FY18 | FY19 | FY20 | FY21 | FY22 | FY23 | FY24 |
|---|---|---|---|---|---|---|---|---|---|---|
| Net income | 4.4M | 2.6M | 4.5M | -704K | -386K | 12.2M | 4.3M | 1.5M | — | -4.3M |
| Depreciation & amortization | — | — | — | — | — | — | — | — | — | — |
| Stock-based compensation | 365K | 586K | 495K | 244K | 353K | 437K | 211K | 134K | — | 11K |
| Change in working capital | 2.8M | 1.2M | -520K | -12.4M | -4.7M | 1.3M | 1.5M | 1.1M | — | -5.6M |
| Operating cash flow | -3.6M | -8.5M | -16.6M | -37.4M | -29.7M | -6.5M | -19.6M | -23M | — | 4.8M |
| Capital expenditure | -322K | -396K | -103K | -281K | -69K | -233K | -107K | -126K | — | — |
| Investing cash flow | -1.2M | -2.2M | 593K | -14.8M | 3M | -2.1M | 5.3M | -3.4M | — | 2.5M |
| Dividends paid | -811K | -807K | -807K | -806K | -802K | -399K | -807K | -807K | — | -807K |
| Share repurchases | -997K | -698K | -692K | -597K | -71K | 0 | — | — | — | — |
| Financing cash flow | -1.8M | -1.5M | -1.5M | -1.4M | -873K | -399K | -807K | 3.2M | 1M | 193K |
| Net change in cash | -6.6M | -12.2M | -17.4M | -53.6M | -27.6M | -9M | -15.2M | -23.3M | 1M | 7.5M |
| Free cash flow | 1.9M | 920K | 12.1M | 4.2M | -1.9M | 8.7M | 981K | 6.3M | — | 4.6M |
Cash from operations, what's left after capex, and what went back to shareholders. Bars below the line are cash going out.
Click a row to chart it; unreported figures show a dash.
| Period | Q4 22 | Q1 23 | Q2 23 | Q3 23 | Q4 23 | Q1 24 | Q2 24 | Q3 24 | Q4 24 | Q1 25 | Q2 25 | Q3 25 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Net income | 1M | -1.4M | 1.7M | — | — | — | — | — | 412K | 802K | 3.3M | 577K |
| Depreciation & amortization | — | — | — | — | — | — | — | — | — | — | — | — |
| Stock-based compensation | 42K | 73K | 26K | — | — | — | — | — | 2K | 2K | 0 | 0 |
| Change in working capital | 5.9M | 4.8M | -16.6M | — | — | — | — | — | 1.7M | 7.4M | -29.6M | 7.5M |
| Operating cash flow | -17.5M | 2.5M | -14.1M | — | — | — | — | — | 9.6M | -722K | 9.3M | 6.6M |
| Capital expenditure | -14K | -59K | -9K | — | — | — | — | — | — | — | — | — |
| Investing cash flow | -2.3M | -4.7M | 4M | — | — | — | — | — | 3.4M | 1.3M | 1.8M | -18.6M |
| Dividends paid | -399K | — | — | — | — | — | — | — | -400K | — | — | 0 |
| Share repurchases | — | — | — | — | — | — | — | — | — | — | — | — |
| Financing cash flow | 1.6M | 2M | 0 | — | 0 | — | — | — | -400K | 0 | 0 | 0 |
| Net change in cash | -18.2M | -163K | -10.1M | — | 0 | — | — | — | 12.6M | 601K | 11.1M | -11.9M |
| Free cash flow | 8.7M | -11.7M | 6.7M | — | — | — | — | — | 9.5M | -986K | 9.1M | 6.6M |
| 2:1 |