XML 20 R13.htm IDEA: XBRL DOCUMENT
v3.26.1

Net Income (Loss) Per Common Share | 3 Months Ended
--- | ---
Apr. 30, 2026
Earnings Per Share [Abstract] |
Net Income (Loss) Per Common Share | Note 4 – Net Income (Loss) Per Common Share Basic net income (loss) per share is calculated by dividing net income (loss) by the weighted average number of shares outstanding during the period. Diluted net income (loss) per share is calculated by dividing net income (loss) by the weighted average number of shares and, if dilutive, common equivalent shares, determined using the treasury stock method for stock options, restricted stock awards and restricted stock units outstanding during the period. A reconciliation of the shares used in calculating basic and diluted net income (loss) per share is as follows:
|  | Three Months Ended |  |  |
|  | April 30, 2026 |  |  | April 30, 2025 |  |  |
Weighted Average Common Shares Outstanding – Basic |  |  | 7,677,974 |  |  |  | 7,559,704 |  |  |
Effect of Dilutive Options, Restricted Stock Awards and Restricted Stock Units |  |  | 96,341 |  |  |  | — |  | (1) |
Weighted Average Common Shares Outstanding – Diluted |  |  | 7,774,315 |  |  |  | 7,559,704 |  |  |
(1) For the three months ended April 30, 2025 we had weighted average common stock equivalent shares outstanding of 67,066 that could potentially dilute earnings per share in future periods. These shares were excluded from the computation of diluted earnings per share because their effect would have been anti-dilutive given the net loss during the period. For the three months ended April 30, 2026 and 2025, the diluted per share amounts do not reflect weighted average common equivalent shares outstanding of 303,873 and 451,199, respectively. These outstanding common equivalent shares were not included due to their anti-dilutive effect.

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

X
- Definition The entire disclosure for earnings per share. + References Reference 1: http://www.xbrl.org/2003/role/disclosureRef -Topic 260 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 1 -Subparagraph (c) -Publisher FASB -URI https://asc.fasb.org/1943274/2147482662/260-10-50-1 Reference 2: http://www.xbrl.org/2003/role/disclosureRef -Topic 260 -Name Accounting Standards Codification -Publisher FASB -URI https://asc.fasb.org/260/tableOfContent Reference 3: http://www.xbrl.org/2003/role/disclosureRef -Topic 260 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 2 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482662/260-10-50-2 Reference 4: http://www.xbrl.org/2003/role/disclosureRef -Topic 260 -SubTopic 10 -Name Accounting Standards Codification -Section 50 -Paragraph 3 -Publisher FASB -URI https://asc.fasb.org/1943274/2147482662/260-10-50-3 + Details
Name: | us-gaap_EarningsPerShareTextBlock
Namespace Prefix: | us-gaap_
Data Type: | dtr-types:textBlockItemType
Balance Type: | na
Period Type: | duration