XML 28 R17.htm IDEA: XBRL DOCUMENT
v3.23.2

NET INCOME PER SHARE | 6 Months Ended
--- | ---
Jul. 31, 2023
NET INCOME PER SHARE |
NET INCOME PER SHARE | NOTE 11 – NET INCOME PER SHARE Basic and diluted net income per share amounts are computed as follows (shares in thousands except in the note):
​ | ​ | ​ | ​ | ​ | ​ | ​
​ | ​ | Three Months Ended July 31,
​ |  | 2023 |  | 2022
Net income | ​ | $ | 12,767 | ​ | $ | 4,222
​ | ​ | ​ | ​ | ​ | ​ | ​
Weighted average number of shares outstanding – basic | ​ | ​ | 13,403 | ​ | ​ | 14,134
Effect of stock awards (1) | ​ | ​ | 139 | ​ | ​ | 113
Weighted average number of shares outstanding – diluted | ​ | ​ | 13,542 | ​ | ​ | 14,247
​ | ​ | ​ | ​ | ​ | ​ | ​
Net income per share | ​ | ​ | ​ | ​ | ​ | ​
Basic | ​ | $ | 0.95 | ​ | $ | 0.30
Diluted | ​ | $ | 0.94 | ​ | $ | 0.30
| (1) | For the three months ended July 31, 2023 and 2022, the weighted average numbers of shares determined on a dilutive basis exclude the effects of antidilutive stock options covering an aggregate of 785,167 and 876,734 shares of common stock, respectively. |
​ | ​ | ​ | ​ | ​ | ​ | ​
​ | ​ | Six Months Ended July 31,
​ |  | 2023 |  | 2022
Net income | ​ | $ | 14,876 | ​ | $ | 11,707
​ | ​ | ​ | ​ | ​ | ​ | ​
Weighted average number of shares outstanding – basic | ​ | ​ | 13,408 | ​ | ​ | 14,516
Effect of stock awards (1) | ​ | ​ | 136 | ​ | ​ | 100
Weighted average number of shares outstanding – diluted | ​ | ​ | 13,544 | ​ | ​ | 14,616
​ | ​ | ​ | ​ | ​ | ​ | ​
Net income per share | ​ | ​ | ​ | ​ | ​ | ​
Basic | ​ | $ | 1.11 | ​ | $ | 0.81
Diluted | ​ | $ | 1.10 | ​ | $ | 0.80
| (1) | For the six months ended July 31, 2023 and 2022, the weighted average numbers of shares determined on a dilutive basis exclude the effects of antidilutive stock options covering an aggregate of 818,501 and 876,734 shares of common stock, respectively. |

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