| Schedule of Earnings Per Share, Basic and Diluted |
| | | | | | | | | | | | | | | | | | | Three Months Ended June 30, | | Six Months Ended June 30, | | 2026 | 2025 | | 2026 | 2025 | | Net income (loss) | $ | (683,915) | | $ | 1,205,068 | | | $ | (1,461,438) | | $ | 1,062,268 | | | | | | | | | Weighted average shares outstanding - basic | 17,450,639 | | 16,947,527 | | | 17,484,781 | | 16,980,960 | | | Basic income (loss) per common share | $ | (0.04) | | $ | 0.07 | | | $ | (0.08) | | $ | 0.06 | | | | | | | | | Weighted average shares outstanding - basic | 17,450,639 | | 16,947,527 | | | 17,484,781 | | 16,980,960 | | | Plus: | | | | | | | “In-the-money” stock options | — | | 313 | | | — | | 313 | | | Contingently issuable restricted stock units | — | | 869,616 | | | — | | 846,355 | | | Less: | | | | | | Shares offset for in-the-money options (treasury stock method) | — | | (78) | | | — | | (76) | | | Weighted average shares outstanding - diluted | 17,450,639 | | 17,817,378 | | | 17,484,781 | | 17,827,552 | | | Diluted income (loss) per common share | $ | (0.04) | | $ | 0.07 | | | $ | (0.08) | | $ | 0.06 | |
|
| Schedule of Antidilutive Securities Excluded from Computation of Earnings Per Share |
The Company excluded the following weighted average items from the above computation of diluted income (loss) per common share, as their effect would be anti-dilutive: | | | | | | | | | | | | | | | | | | | Three Months Ended June 30, | | Six Months Ended June 30, | | 2026 | 2025 | | 2026 | 2025 | | Stock options | 14,518 | | 23,674 | | | 19,269 | | 23,987 | | | Restricted stock units | 1,135,084 | | 429,100 | | | 1,250,451 | | 429,100 | | | Total excluded shares | 1,149,602 | | 452,774 | | | 1,269,720 | | 453,087 | |
|