Note 15.  Net Income Per Common Share

The following table sets forth the computation of our basic and diluted net income per share:

Year Ended

December 31,

(In thousands, except share and per share data)

2025

  ​ ​ ​

2024

  ​ ​ ​

2023

Net income

$

19,086

$

16,960

$

28,515

Weighted-average shares outstanding

22,872,841

23,883,729

22,925,497

Weighted-average shares used to compute diluted net income per share

23,295,328

24,138,244

23,176,169

Net income per share - Basic

$

0.83

$

0.71

$

1.24

Net income per share - Diluted

$

0.82

$

0.70

$

1.23

The following common stock equivalents were excluded from the computation of diluted net income per common share for the periods presented because including them would have been anti-dilutive:

Year Ended

December 31,

2025

  ​ ​ ​

2024

  ​ ​ ​

2023

Restricted stock units

129

313,458

337,202

Common stock options

277,233

360,246

389,229

Performance stock units

53,791

17,392

Employee stock purchase plan

85,957

83,598

Total

363,319

811,093

743,823

About Earnings Per Share Disclosures

The earnings per share disclosure breaks down the calculation from net income to both basic and diluted EPS, revealing the full impact of a company's capital structure on per-share economics. The reconciliation between basic and diluted share counts exposes how many stock options, RSUs, convertible securities, and warrants are potentially dilutive to existing shareholders.

Key signals: a widening gap between basic and diluted shares indicates growing dilution from equity compensation or convertible instruments. Anti-dilutive securities excluded from the diluted calculation deserve attention — they represent latent dilution that will materialize if the stock price rises. Watch for the effect of share buybacks on per-share metrics: EPS growth driven primarily by repurchases rather than income growth signals weakening fundamentals. Compare year-over-year changes in the diluted share count against equity compensation expense to assess whether management is effectively managing dilution.