- if ( (( tte[i].genBound8 & 0xFC) == generation8) * 8 * ONE_PLY + tte[i].depth8
- < ((replace->genBound8 & 0xFC) == generation8) * 8 * ONE_PLY + replace->depth8)
+ // Due to our packed storage format for generation and its cyclic
+ // nature we add 259 (256 is the modulus plus 3 to keep the lowest
+ // two bound bits from affecting the result) to calculate the entry
+ // age correctly even after generation8 overflows into the next cycle.
+ if ( replace->depth8 - ((259 + generation8 - replace->genBound8) & 0xFC) * 2
+ > tte[i].depth8 - ((259 + generation8 - tte[i].genBound8) & 0xFC) * 2)