- || Time.elapsed() > Time.available() * (mainThread->failedLow ? 641 : 315) / 640
- || (mainThread->easyMovePlayed = ( rootMoves[0].pv[0] == easyMove
- && mainThread->bestMoveChanges < 0.03
- && Time.elapsed() > Time.available() / 8)))
+ || Time.elapsed() > Time.available() * ( 640 - 160 * !mainThread->failedLow
+ - 126 * (bestValue >= mainThread->previousMoveScore)
+ - 124 * (bestValue >= mainThread->previousMoveScore && !mainThread->failedLow))/640
+ || ( mainThread->easyMovePlayed = ( rootMoves[0].pv[0] == easyMove
+ && mainThread->bestMoveChanges < 0.03
+ && Time.elapsed() > Time.available() * 25/206)))