diff --git a/src/history.cpp b/src/history.cpp index 3cda3706..22116412 100644 --- a/src/history.cpp +++ b/src/history.cpp @@ -75,8 +75,12 @@ void History::failure(Piece p, Square to, Depth d) { assert(square_is_ok(to)); history[p][to] -= int(d) * int(d); - if (history[p][to] < 0) - history[p][to] = 0; + + // Prevent history underflow + if (history[p][to] <= -HistoryMax) + for (int i = 0; i < 16; i++) + for (int j = 0; j < 64; j++) + history[i][j] /= 2; }