- if (stp->key == st->key)
- return true; // Draw at first repetition
-
- } while ((e -= 2) >= 4);
+ // At root position ply is 1, so return a draw score if a position
+ // repeats once earlier but after or at the root, or repeats twice
+ // strictly before the root.
+ if ( stp->key == st->key
+ && ++cnt + (ply - i > 0) == 2)
+ return true;
+ }