v3.26.1
CONSOLIDATED STATEMENTS OF STOCKHOLDERS' EQUITY - USD ($)
$ in Thousands
Common Stock
Additional Paid-in Capital
Retained Earnings
Treasury Stock
Accumulated Other Comprehensive Income (Loss)
Total
Balance at Jan. 31, 2025 $ 2,374 $ 168,966 $ 292,698 $ (105,643) $ (6,538) $ 351,857
Balances (in shares) at Jan. 31, 2025 13,634,214          
Net income     22,550     22,550
Foreign currency translation gain (loss)         3,621 3,621
Net unrealized gains (losses) on available-for-sale securities         2,680 2,680
Stock compensation expense   1,188       1,188
Stock option exercises and restricted stock unit settlements, net   (4,556)   (1,526)   (6,082)
Stock option exercises and restricted stock unit settlements, net (in shares) 59,472          
Common stock repurchases       (6,849)   (6,849)
Common stock repurchases (in shares) (55,117)          
Cash dividends     (5,070)     (5,070)
Balance at Apr. 30, 2025 $ 2,374 165,598 310,178 (114,018) (237) 363,895
Balances (in shares) at Apr. 30, 2025 13,638,569          
Balance at Jan. 31, 2025 $ 2,374 168,966 292,698 (105,643) (6,538) 351,857
Balances (in shares) at Jan. 31, 2025 13,634,214          
Net income           57,825
Net unrealized gains (losses) on available-for-sale securities           $ 1,598
Common stock repurchases (in shares)           (56,117)
Balance at Jul. 31, 2025 $ 2,374 166,616 340,276 (114,520) (1,570) $ 393,176
Balances (in shares) at Jul. 31, 2025 13,811,575          
Balance at Apr. 30, 2025 $ 2,374 165,598 310,178 (114,018) (237) 363,895
Balances (in shares) at Apr. 30, 2025 13,638,569          
Net income     35,275     35,275
Foreign currency translation gain (loss)         (251) (251)
Net unrealized gains (losses) on available-for-sale securities         (1,082) (1,082)
Stock compensation expense   2,265       2,265
Stock option exercises and restricted stock unit settlements, net   (1,247)   (303)   (1,550)
Stock option exercises and restricted stock unit settlements, net (in shares) 174,006          
Common stock repurchases       (199)   (199)
Common stock repurchases (in shares) (1,000)          
Cash dividends     (5,177)     (5,177)
Balance at Jul. 31, 2025 $ 2,374 166,616 340,276 (114,520) (1,570) 393,176
Balances (in shares) at Jul. 31, 2025 13,811,575          
Balance at Jan. 31, 2026 $ 2,374 167,234 406,197 (114,361) 818 462,262
Balances (in shares) at Jan. 31, 2026 13,950,712          
Net income     46,063     46,063
Foreign currency translation gain (loss)         (541) (541)
Net unrealized gains (losses) on available-for-sale securities         (2,659) (2,659)
Stock compensation expense   2,036       2,036
Stock option exercises and restricted stock unit settlements, net   (6,037)   (17,653)   (23,690)
Stock option exercises and restricted stock unit settlements, net (in shares) 76,165          
Common stock repurchases       (2,955)   (2,955)
Common stock repurchases (in shares) (6,450)          
Cash dividends     (7,005)     (7,005)
Balance at Apr. 30, 2026 $ 2,374 163,233 445,255 (134,969) (2,382) 473,511
Balances (in shares) at Apr. 30, 2026 14,020,427          
Balance at Jan. 31, 2026 $ 2,374 167,234 406,197 (114,361) 818 462,262
Balances (in shares) at Jan. 31, 2026 13,950,712          
Net income           99,365
Net unrealized gains (losses) on available-for-sale securities           $ (7,209)
Common stock repurchases (in shares)           (17,717)
Balance at Jul. 31, 2026 $ 2,374 165,039 491,539 (144,914) (7,199) $ 506,839
Balances (in shares) at Jul. 31, 2026 14,032,792          
Balance at Apr. 30, 2026 $ 2,374 163,233 445,255 (134,969) (2,382) 473,511
Balances (in shares) at Apr. 30, 2026 14,020,427          
Net income     53,302     53,302
Foreign currency translation gain (loss)         (267) (267)
Net unrealized gains (losses) on available-for-sale securities         (4,550) (4,550)
Stock compensation expense   2,422       2,422
Stock option exercises and restricted stock unit settlements, net   (1,045)   (3,322)   (4,367)
Stock option exercises and restricted stock unit settlements, net (in shares) 22,755          
Common stock repurchases       (6,694)   (6,694)
Common stock repurchases (in shares) (11,267)          
Cash dividends     (7,018)     (7,018)
Issuance of treasury stock for acquisition (see Note 14)   429   71   500
Issuance of treasury stock for acquisition (see Note 14) (in shares) 877          
Balance at Jul. 31, 2026 $ 2,374 $ 165,039 $ 491,539 $ (144,914) $ (7,199) $ 506,839
Balances (in shares) at Jul. 31, 2026 14,032,792