Grouped by what each filing is, not just when it landed. Straight from EDGAR, free, no login. Back to OSPN · Search inside filings · Replay these filings in order (study mode)
The fiscal-year statement table from these filings’ XBRL, one row per year with its source and date: XLSX · CSV
Annual and quarterly reports
Three months to 2026-09-30 against 2025-09-30: Revenue $63.9M, up 12.0% from $57.1M; Net income $7.8M, up 19.7% from $6.5M. Nine months to 2026-09-30 against 2025-09-30: Operating cash flow $44.6M, down 5.0% from $46.9M. From this filing’s own figures
The quarterly report. Its statements are reviewed but not audited, and one quarter can mislead on its own. General guide to this form
Three months to 2026-06-30 against 2025-06-30: Revenue $60.5M, up 1.0% from $59.8M; Net income $6.8M, down 18.7% from $8.3M. Six months to 2026-06-30 against 2025-06-30: Operating cash flow $28.1M, down 21.1% from $35.6M. From this filing’s own figures
The quarterly report. Its statements are reviewed but not audited, and one quarter can mislead on its own. General guide to this form
Three months to 2026-03-31 against 2025-03-31: Revenue $65.9M, up 4.1% from $63.4M; Net income $11.6M, down 20.3% from $14.5M; Operating cash flow $28.2M, down 4.1% from $29.4M. From this filing’s own figures
The quarterly report. Its statements are reviewed but not audited, and one quarter can mislead on its own. General guide to this form
Year to 2025-12-31 against 2024-12-31: Revenue $243.2M, up 0.0% from $243.2M; Net income $72.9M, up 27.7% from $57.1M; Operating cash flow $59.5M, up 6.8% from $55.7M. From this filing’s own figures
The audited annual report. It covers a year that has already ended and says little about the current quarter. General guide to this form
Three months to 2025-09-30 against 2024-09-30: Revenue $57.1M, up 1.4% from $56.2M; Net income $6.5M, down 21.3% from $8.3M. Nine months to 2025-09-30 against 2024-09-30: Operating cash flow $46.9M, up 8.4% from $43.2M. From this filing’s own figures
The quarterly report. Its statements are reviewed but not audited, and one quarter can mislead on its own. General guide to this form
Three months to 2025-06-30 against 2024-06-30: Revenue $59.8M, down 1.8% from $60.9M; Net income $8.3M, up 27.3% from $6.6M. Six months to 2025-06-30 against 2024-06-30: Operating cash flow $35.6M, up 21.6% from $29.3M. From this filing’s own figures
The quarterly report. Its statements are reviewed but not audited, and one quarter can mislead on its own. General guide to this form
Three months to 2025-03-31 against 2024-03-31: Revenue $63.4M, down 2.3% from $64.8M; Net income $14.5M, up 7.7% from $13.5M; Operating cash flow $29.4M, up 8.9% from $27.0M. From this filing’s own figures
The quarterly report. Its statements are reviewed but not audited, and one quarter can mislead on its own. General guide to this form
Year to 2024-12-31 against 2023-12-31: Revenue $243.2M, up 3.4% from $235.1M; Net income $57.1M, against net loss of $29.8M; Operating cash flow $55.7M, against operating cash used of $10.7M. From this filing’s own figures
The audited annual report. It covers a year that has already ended and says little about the current quarter. General guide to this form
Three months to 2024-09-30 against 2023-09-30: Revenue $56.2M, down 4.4% from $58.8M; Net income $8.3M, against net loss of $4.1M. Nine months to 2024-09-30 against 2023-09-30: Operating cash flow $43.2M, against operating cash used of $13.8M. From this filing’s own figures
The quarterly report. Its statements are reviewed but not audited, and one quarter can mislead on its own. General guide to this form
Three months to 2024-06-30 against 2023-06-30: Revenue $60.9M, up 9.3% from $55.7M; Net income $6.6M, against net loss of $17.8M. Six months to 2024-06-30 against 2023-06-30: Operating cash flow $29.3M, against operating cash used of $6.4M. From this filing’s own figures
The quarterly report. Its statements are reviewed but not audited, and one quarter can mislead on its own. General guide to this form
Three months to 2024-03-31 against 2023-03-31: Revenue $64.8M, up 12.6% from $57.6M; Net income $13.5M, against net loss of $8.4M; Operating cash flow $27.0M, up 103.7% from $13.2M. From this filing’s own figures
The quarterly report. Its statements are reviewed but not audited, and one quarter can mislead on its own. General guide to this form
Year to 2023-12-31 against 2022-12-31: Revenue $235.1M, up 7.4% from $219.0M; Net loss $29.8M, 106.5% larger than $14.4M; Operating cash used $10.7M, 86.4% larger than $5.8M. From this filing’s own figures
The audited annual report. It covers a year that has already ended and says little about the current quarter. General guide to this form
Three months to 2023-09-30 against 2022-09-30: Revenue $58.8M, up 3.0% from $57.1M; Net loss $4.1M, 42.6% smaller than $7.2M. Nine months to 2023-09-30 against 2022-09-30: Operating cash used $13.8M, 1.2% larger than $13.7M. From this filing’s own figures
The quarterly report. Its statements are reviewed but not audited, and one quarter can mislead on its own. General guide to this form
Three months to 2023-06-30 against 2022-06-30: Revenue $55.7M, up 5.6% from $52.8M; Net loss $17.8M, 89.9% larger than $9.3M. Six months to 2023-06-30 against 2022-06-30: Operating cash used $6.4M, 43.4% smaller than $11.3M. From this filing’s own figures
The quarterly report. Its statements are reviewed but not audited, and one quarter can mislead on its own. General guide to this form
Three months to 2023-03-31 against 2022-03-31: Revenue $57.6M, up 9.8% from $52.4M; Net loss $8.4M, against net income of $5.2M; Operating cash flow $13.2M, up 261.7% from $3.7M. From this filing’s own figures
The quarterly report. Its statements are reviewed but not audited, and one quarter can mislead on its own. General guide to this form
Year to 2022-12-31 against 2021-12-31: Revenue $219.0M, up 2.1% from $214.5M; Net loss $14.4M, 52.8% smaller than $30.6M; Operating cash used $5.8M, 110.8% larger than $2.7M. From this filing’s own figures
The audited annual report. It covers a year that has already ended and says little about the current quarter. General guide to this form
The quarterly report. Its statements are reviewed but not audited, and one quarter can mislead on its own. General guide to this form
The quarterly report. Its statements are reviewed but not audited, and one quarter can mislead on its own. General guide to this form
The quarterly report. Its statements are reviewed but not audited, and one quarter can mislead on its own. General guide to this form
The audited annual report. It covers a year that has already ended and says little about the current quarter. General guide to this form
The quarterly report. Its statements are reviewed but not audited, and one quarter can mislead on its own. General guide to this form
The quarterly report. Its statements are reviewed but not audited, and one quarter can mislead on its own. General guide to this form
The quarterly report. Its statements are reviewed but not audited, and one quarter can mislead on its own. General guide to this form
The audited annual report. It covers a year that has already ended and says little about the current quarter. General guide to this form
The quarterly report. Its statements are reviewed but not audited, and one quarter can mislead on its own. General guide to this form
Prospectuses and share registrations
Registers shares for employee stock plans. It is routine and is not a capital raise. General guide to this form
Registers shares for employee stock plans. It is routine and is not a capital raise. General guide to this form
Registers securities that may be sold later, often a shelf. Registering them does not mean any have been sold. General guide to this form
Registers shares for employee stock plans. It is routine and is not a capital raise. General guide to this form
Registers shares for employee stock plans. It is routine and is not a capital raise. General guide to this form
Insider and institutional holdings
A change in an insider’s holdings. It is not automatically a purchase or sale in the market: awards, option exercises and tax withholding file here too, so read the transaction code. General guide to this form
A holder of more than 5% who states a passive intent. It shows a stake at a date, and most filers are index and fund managers. General guide to this form
A holder of more than 5% who states a passive intent. It shows a stake at a date, and most filers are index and fund managers. General guide to this form
A change in an insider’s holdings. It is not automatically a purchase or sale in the market: awards, option exercises and tax withholding file here too, so read the transaction code. General guide to this form
A change in an insider’s holdings. It is not automatically a purchase or sale in the market: awards, option exercises and tax withholding file here too, so read the transaction code. General guide to this form
A change in an insider’s holdings. It is not automatically a purchase or sale in the market: awards, option exercises and tax withholding file here too, so read the transaction code. General guide to this form
An amendment, so read it beside the original. A holder of more than 5% who states a passive intent. It shows a stake at a date, and most filers are index and fund managers. General guide to this form
A change in an insider’s holdings. It is not automatically a purchase or sale in the market: awards, option exercises and tax withholding file here too, so read the transaction code. General guide to this form
A change in an insider’s holdings. It is not automatically a purchase or sale in the market: awards, option exercises and tax withholding file here too, so read the transaction code. General guide to this form
An amendment, so read it beside the original. A holder of more than 5% who states a passive intent. It shows a stake at a date, and most filers are index and fund managers. General guide to this form
A change in an insider’s holdings. It is not automatically a purchase or sale in the market: awards, option exercises and tax withholding file here too, so read the transaction code. General guide to this form
A change in an insider’s holdings. It is not automatically a purchase or sale in the market: awards, option exercises and tax withholding file here too, so read the transaction code. General guide to this form
A change in an insider’s holdings. It is not automatically a purchase or sale in the market: awards, option exercises and tax withholding file here too, so read the transaction code. General guide to this form
A change in an insider’s holdings. It is not automatically a purchase or sale in the market: awards, option exercises and tax withholding file here too, so read the transaction code. General guide to this form
A change in an insider’s holdings. It is not automatically a purchase or sale in the market: awards, option exercises and tax withholding file here too, so read the transaction code. General guide to this form
A change in an insider’s holdings. It is not automatically a purchase or sale in the market: awards, option exercises and tax withholding file here too, so read the transaction code. General guide to this form
An amendment, so read it beside the original. A holder of more than 5% who states a passive intent. It shows a stake at a date, and most filers are index and fund managers. General guide to this form
A change in an insider’s holdings. It is not automatically a purchase or sale in the market: awards, option exercises and tax withholding file here too, so read the transaction code. General guide to this form
A change in an insider’s holdings. It is not automatically a purchase or sale in the market: awards, option exercises and tax withholding file here too, so read the transaction code. General guide to this form
A change in an insider’s holdings. It is not automatically a purchase or sale in the market: awards, option exercises and tax withholding file here too, so read the transaction code. General guide to this form
A change in an insider’s holdings. It is not automatically a purchase or sale in the market: awards, option exercises and tax withholding file here too, so read the transaction code. General guide to this form
A change in an insider’s holdings. It is not automatically a purchase or sale in the market: awards, option exercises and tax withholding file here too, so read the transaction code. General guide to this form
A change in an insider’s holdings. It is not automatically a purchase or sale in the market: awards, option exercises and tax withholding file here too, so read the transaction code. General guide to this form
A change in an insider’s holdings. It is not automatically a purchase or sale in the market: awards, option exercises and tax withholding file here too, so read the transaction code. General guide to this form
A change in an insider’s holdings. It is not automatically a purchase or sale in the market: awards, option exercises and tax withholding file here too, so read the transaction code. General guide to this form
Material events as they were disclosed
Item 9.01 lists financial statements and exhibits, so the attachments are the substance. From the 8-K item number
Item 2.02 says results were released, usually in an attached press release. It does not say results improved, and the figures are unaudited. From the 8-K item number
Item 5.02 reports a director or senior officer arriving or leaving, or their pay changing. It seldom says the real reason for a departure. Also reports Item 5.07. From the 8-K item number
Item 8.01 is for events the company chooses to report, with no required content. The label alone says nothing about the importance. From the 8-K item number
Item 9.01 lists financial statements and exhibits, so the attachments are the substance. From the 8-K item number
Item 9.01 lists financial statements and exhibits, so the attachments are the substance. From the 8-K item number
Item 9.01 lists financial statements and exhibits, so the attachments are the substance. From the 8-K item number
Item 2.02 says results were released, usually in an attached press release. It does not say results improved, and the figures are unaudited. From the 8-K item number
Item 2.03 reports a new debt or similar obligation. Whether it helps or strains the company is not something the form states. Also reports Item 1.01. From the 8-K item number
Item 5.02 reports a director or senior officer arriving or leaving, or their pay changing. It seldom says the real reason for a departure. Also reports Item 5.07. From the 8-K item number
Item 2.02 says results were released, usually in an attached press release. It does not say results improved, and the figures are unaudited. From the 8-K item number
Item 2.02 says results were released, usually in an attached press release. It does not say results improved, and the figures are unaudited. From the 8-K item number
Item 8.01 is for events the company chooses to report, with no required content. The label alone says nothing about the importance. From the 8-K item number
Item 2.02 says results were released, usually in an attached press release. It does not say results improved, and the figures are unaudited. From the 8-K item number
Item 5.02 reports a director or senior officer arriving or leaving, or their pay changing. It seldom says the real reason for a departure. From the 8-K item number
Item 2.02 says results were released, usually in an attached press release. It does not say results improved, and the figures are unaudited. From the 8-K item number
Item 5.07 reports the results of a shareholder vote. It gives the counts, and some votes are advisory only. From the 8-K item number
Item 8.01 is for events the company chooses to report, with no required content. The label alone says nothing about the importance. From the 8-K item number
Item 2.02 says results were released, usually in an attached press release. It does not say results improved, and the figures are unaudited. From the 8-K item number
Item 2.02 says results were released, usually in an attached press release. It does not say results improved, and the figures are unaudited. From the 8-K item number
An amendment, so read it beside the original. Item 2.05 reports a plan to exit or restructure a business, with its expected costs. Those costs are estimates when filed. From the 8-K item number
Item 5.02 reports a director or senior officer arriving or leaving, or their pay changing. It seldom says the real reason for a departure. Also reports Item 7.01. From the 8-K item number
Item 8.01 is for events the company chooses to report, with no required content. The label alone says nothing about the importance. From the 8-K item number
Item 2.02 says results were released, usually in an attached press release. It does not say results improved, and the figures are unaudited. Also reports Items 5.02, 8.01. From the 8-K item number
Item 7.01 shares information under fair disclosure rules, often slides. It is furnished rather than filed, so it carries less legal liability. From the 8-K item number
Shareholder meetings and pay disclosure
Extra material added to a proxy statement. It argues the company’s side, so read it beside the proxy itself. General guide to this form
The proxy statement for a shareholder vote, with executive pay and board nominees. It gives the board’s view of each proposal. General guide to this form
The proxy statement for a shareholder vote, with executive pay and board nominees. It gives the board’s view of each proposal. General guide to this form
The proxy statement for a shareholder vote, with executive pay and board nominees. It gives the board’s view of each proposal. General guide to this form
The proxy statement for a shareholder vote, with executive pay and board nominees. It gives the board’s view of each proposal. General guide to this form
Extra material added to a proxy statement. It argues the company’s side, so read it beside the proxy itself. General guide to this form
The proxy statement for a shareholder vote, with executive pay and board nominees. It gives the board’s view of each proposal. General guide to this form
Extra material added to a proxy statement. It argues the company’s side, so read it beside the proxy itself. General guide to this form
Extra material added to a proxy statement. It argues the company’s side, so read it beside the proxy itself. General guide to this form
Extra material added to a proxy statement. It argues the company’s side, so read it beside the proxy itself. General guide to this form
Extra material added to a proxy statement. It argues the company’s side, so read it beside the proxy itself. General guide to this form
Extra material added to a proxy statement. It argues the company’s side, so read it beside the proxy itself. General guide to this form
Extra material added to a proxy statement. It argues the company’s side, so read it beside the proxy itself. General guide to this form
Extra material added to a proxy statement. It argues the company’s side, so read it beside the proxy itself. General guide to this form
Extra material added to a proxy statement. It argues the company’s side, so read it beside the proxy itself. General guide to this form
Extra material added to a proxy statement. It argues the company’s side, so read it beside the proxy itself. General guide to this form
Extra material added to a proxy statement. It argues the company’s side, so read it beside the proxy itself. General guide to this form
Extra material added to a proxy statement. It argues the company’s side, so read it beside the proxy itself. General guide to this form
Extra material added to a proxy statement. It argues the company’s side, so read it beside the proxy itself. General guide to this form
Extra material added to a proxy statement. It argues the company’s side, so read it beside the proxy itself. General guide to this form
Extra material added to a proxy statement. It argues the company’s side, so read it beside the proxy itself. General guide to this form
Extra material added to a proxy statement. It argues the company’s side, so read it beside the proxy itself. General guide to this form
Extra material added to a proxy statement. It argues the company’s side, so read it beside the proxy itself. General guide to this form
Extra material added to a proxy statement. It argues the company’s side, so read it beside the proxy itself. General guide to this form
Extra material added to a proxy statement. It argues the company’s side, so read it beside the proxy itself. General guide to this form
Each later 10-Q and 10-K prints earlier periods again as comparatives. When it prints a different value for the same period, both values are below with the filing behind each. The filing gives the reason (a correction, a new accounting standard applied to past years, a business moved to discontinued operations); we do not read it, so we do not name one. Every company’s count, and the rule
795 period figures were printed by more than one OSPN filing. 687 carried the same value every time. 106 changes were a later report printing a different value for the same period, 7 of them in an amended filing. Not listed: 11 changes under 0.05% (the same figure at a different rounding).
| Figure | Period | First printed | Later printed | Change |
|---|---|---|---|---|
| Cash and equivalents CashAndCashEquivalentsAtCarryingValue | At 2023-12-31 | $42.5M | $43.0M | $508,000 higher (1.2%) |
| Operating cash flow NetCashProvidedByUsedInOperatingActivities | Year to 2022-12-31 | $-5.8M | $-5.8M | $27,000 higher (0.5%) |
| Diluted share count WeightedAverageNumberOfDilutedSharesOutstanding | Nine months to 2022-09-30 | 39,801 shares | 39,801,000 shares | 39,761,199 shares higher (99900.0%) |
| Diluted share count WeightedAverageNumberOfDilutedSharesOutstanding | Three months to 2022-09-30 | 39,723 shares | 39,723,000 shares | 39,683,277 shares higher (99900.0%) |
| Diluted share count WeightedAverageNumberOfDilutedSharesOutstanding | Six months to 2022-06-30 | 39,870 shares | 39,870,000 shares | 39,830,130 shares higher (99900.0%) |
| Diluted share count WeightedAverageNumberOfDilutedSharesOutstanding | Three months to 2022-06-30 | 40,157 shares | 40,157,000 shares | 40,116,843 shares higher (99900.0%) |
| Diluted share count WeightedAverageNumberOfDilutedSharesOutstanding | Three months to 2022-03-31 | 39,687 shares | 39,687,000 shares | 39,647,313 shares higher (99900.0%) |
| Cash and equivalents CashAndCashEquivalentsAtCarryingValue | At 2022-12-31 | $96.5M | $96.2M | $334,000 lower (0.3%) |
| Diluted share count WeightedAverageNumberOfDilutedSharesOutstanding | Year to 2020-12-31 | 40,035 shares | 40,035,000 shares | 39,994,965 shares higher (99900.0%) |
| Diluted share count WeightedAverageNumberOfDilutedSharesOutstanding | Year to 2021-12-31 | 39,614 shares | 39,614,000 shares | 39,574,386 shares higher (99900.0%) |
| Diluted EPS EarningsPerShareDiluted | Three months to 2021-03-31 | -0.23 USD a share | 0.23 USD a share | 0.46 USD a share higher (200.0%) |
| Diluted EPS EarningsPerShareDiluted | Three months to 2021-12-31 | -0.35 USD a share | -0.36 USD a share | 0.01 USD a share lower (2.9%) |
| Gross profit GrossProfit | Nine months to 2021-09-30 | $108.7M | $105.5M | $3.2M lower (3.0%) |
| Diluted share count WeightedAverageNumberOfDilutedSharesOutstanding | Six months to 2021-06-30 | 39,692,000 shares | 39,692 shares | 39,652,308 shares lower (99.9%) |
| Diluted share count WeightedAverageNumberOfDilutedSharesOutstanding | Three months to 2021-06-30 | 39,694,000 shares | 39,694 shares | 39,654,306 shares lower (99.9%) |
| Gross profit GrossProfit | Six months to 2021-06-30 | $71.3M | $69.1M | $2.2M lower (3.1%) |
| Diluted share count WeightedAverageNumberOfDilutedSharesOutstanding | Three months to 2021-03-31 | 39,996,000 shares | 39,996 shares | 39,956,004 shares lower (99.9%) |
| Diluted share count WeightedAverageNumberOfDilutedSharesOutstanding | Year to 2019-12-31 | 40,136,000 shares | 40,136 shares | 40,095,864 shares lower (99.9%) |
| Diluted share count WeightedAverageNumberOfDilutedSharesOutstanding | Year to 2020-12-31 | 40,035,000 shares | 40,035 shares | 39,994,965 shares lower (99.9%) |
| Gross profit GrossProfit | Three months to 2021-03-31 | $35.5M | $34.2M | $1.2M lower (3.4%) |
| Gross profit GrossProfit | Three months to 2020-06-30 | $36.7M | $35.6M | $1.1M lower (3.0%) |
| Gross profit GrossProfit | Three months to 2020-09-30 | $36.0M | $35.0M | $1.0M lower (2.8%) |
| Gross profit GrossProfit | Year to 2020-12-31 | $152.3M | $148.1M | $4.2M lower (2.8%) |
| Gross profit GrossProfit | Three months to 2021-09-30 | $37.4M | $36.4M | $1.0M lower (2.7%) |
| Gross profit GrossProfit | Three months to 2021-06-30 | $35.8M | $34.8M | $976,000 lower (2.7%) |
| Gross profit GrossProfit | Three months to 2020-12-31 | $39.3M | $38.2M | $1.0M lower (2.7%) |
| Gross profit GrossProfit | Three months to 2020-03-31 | $40.3M | $39.3M | $1.0M lower (2.5%) |
| Gross profit GrossProfit | Year to 2019-12-31 | $171.5M | $167.8M | $3.7M lower (2.1%) |
| Diluted share count WeightedAverageNumberOfDilutedSharesOutstanding | Nine months to 2020-09-30 | 40,050,000 shares | 40,050 shares | 40,009,950 shares lower (99.9%) |
| Diluted share count WeightedAverageNumberOfDilutedSharesOutstanding | Three months to 2020-09-30 | 40,033,000 shares | 40,033 shares | 39,992,967 shares lower (99.9%) |
The newest 30 changes are listed, by the date of the later filing; 76 older ones are counted above.
Each report’s comparison uses the figures it filed for the same period a year earlier, for up to its newest 16 reports. A figure is left out when the filing has no matching period. The notes on each row are general guides written by hand, not a reading of that filing. Open a 10-K, 10-Q, 8-K or Form 4 for a reading of that one filing, written by code from its own fields.
Source: the SEC’s own EDGAR submissions record for CIK 0001044777. Forms we do not recognise are left out rather than filed into the wrong group, so a category count is a count of what we could classify, not necessarily of everything ever filed.