- Value v = id_loop(pos, searchMoves);
- loseOnTime = ( UseLSNFiltering
- && myTime < LSNTime
- && myIncrement == 0
- && v < -LSNValue);
+ // Step 2. If after last move we decided to lose on time, do it now!
+ if ( loseOnTime
+ && myTime < LSNTime // double check: catches some very rear false positives!
+ && myIncrement == 0
+ && movesToGo == 0)
+ {
+ while (SearchStartTime + myTime + 1000 > get_system_time())
+ ; // wait here
+ } else if (loseOnTime) // false positive, reset flag
+ loseOnTime = false;