XML 58 R41.htm IDEA: XBRL DOCUMENT
v3.24.1

Note 18 - Quarterly Consolidated Financial Data (Unaudited) (Tables) | 12 Months Ended
--- | ---
Dec. 31, 2023
Notes Tables |
Quarterly Financial Information [Table Text Block] |
|  | Quarters Ended |  |  |  |  |
|  | 3/31/23 |  |  | 6/30/23 |  |  | 9/30/23 |  |  | 12/31/23 |  |  | Total |
Revenue |  | $ | 31,919 |  |  | $ | 32,558 |  |  | $ | 30,941 |  |  | $ | 27,884 |  |  | $ | 123,302 |
Gross profit |  |  | 15,052 |  |  |  | 15,030 |  |  |  | 14,447 |  |  |  | 12,449 |  |  |  | 56,978 |
Earnings before income tax expense |  |  | 3,394 |  |  |  | 3,365 |  |  |  | 2,723 |  |  |  | 1,566 |  |  |  | 11,048 |
Income tax expense |  |  | 577 |  |  |  | 572 |  |  |  | 446 |  |  |  | 111 |  |  |  | 1,706 |
Net earnings |  |  | 2,817 |  |  |  | 2,793 |  |  |  | 2,277 |  |  |  | 1,455 |  |  |  | 9,342 |
Net earnings per common share – basic |  | $ | 0.26 |  |  | $ | 0.25 |  |  | $ | 0.19 |  |  | $ | 0.12 |  |  | $ | 0.82 |
Weighted average common shares outstanding – basic |  |  | 10,755,729 |  |  |  | 11,241,183 |  |  |  | 11,886,005 |  |  |  | 11,962,679 |  |  |  | 11,461,399 |
Net earnings per common share – diluted |  | $ | 0.25 |  |  | $ | 0.24 |  |  | $ | 0.19 |  |  | $ | 0.12 |  |  | $ | 0.79 |
Weighted average common shares outstanding – diluted |  |  | 11,088,664 |  |  |  | 11,696,569 |  |  |  | 12,212,317 |  |  |  | 12,122,099 |  |  |  | 11,779,912 |
|  | Quarters Ended |  |  |  |  |
|  | 3/31/22 |  |  | 6/30/22 |  |  | 9/30/22 |  |  | 12/31/22 |  |  | Total |
Revenue |  | $ | 24,081 |  |  | $ | 29,571 |  |  | $ | 30,771 |  |  | $ | 32,405 |  |  | $ | 116,828 |
Gross margin |  |  | 11,013 |  |  |  | 13,548 |  |  |  | 13,898 |  |  |  | 14,981 |  |  |  | 53,440 |
Earnings before income tax expense |  |  | 655 |  |  |  | 2,570 |  |  |  | 3,039 |  |  |  | 3,881 |  |  |  | 10,145 |
Income tax expense |  |  | 78 |  |  |  | 454 |  |  |  | 515 |  |  |  | 637 |  |  |  | 1,684 |
Net earnings |  |  | 577 |  |  |  | 2,116 |  |  |  | 2,524 |  |  |  | 3,244 |  |  |  | 8,461 |
Net earnings per common share – basic |  | $ | 0.05 |  |  | $ | 0.20 |  |  | $ | 0.24 |  |  | $ | 0.30 |  |  | $ | 0.79 |
Weighted average common shares outstanding – basic |  |  | 10,617,271 |  |  |  | 10,653,268 |  |  |  | 10,695,867 |  |  |  | 10,725,662 |  |  |  | 10,673,017 |
Net earnings per common share – diluted |  | $ | 0.05 |  |  | $ | 0.20 |  |  | $ | 0.23 |  |  | $ | 0.30 |  |  | $ | 0.78 |
Weighted average common shares outstanding – diluted |  |  | 10,842,592 |  |  |  | 10,814,799 |  |  |  | 10,864,540 |  |  |  | 10,928,220 |  |  |  | 10,862,538 |

X
- Definition Tabular disclosure of quarterly financial data. Includes, but is not limited to, financial information for fiscal quarters, cumulative effect of a change in accounting principle and earnings per share data. + References Reference 1: http://www.xbrl.org/2003/role/disclosureRef -Name Accounting Standards Codification -Section 50 -Paragraph 1 -SubTopic 10 -Topic 270 -Publisher FASB -URI https://asc.fasb.org//1943274/2147482964/270-10-50-1 + Details
Name: | us-gaap_ScheduleOfQuarterlyFinancialInformationTableTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration

X
- References No definition available. + Details
Name: | us-gaap_TableTextBlock
Namespace Prefix: | us-gaap_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration