diff --git a/src/search.cpp b/src/search.cpp index 097faf90..7188925c 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -640,8 +640,24 @@ namespace { (ss+1)->skipNullMove = false; pos.undo_null_move(); - if (nullValue >= beta) // Do not return unproven mate scores - return nullValue >= VALUE_MATE_IN_MAX_PLY ? beta : nullValue; + if (nullValue >= beta) + { + // Do not return unproven mate scores + if (nullValue >= VALUE_MATE_IN_MAX_PLY) + nullValue = beta; + + if (depth < 12 * ONE_PLY) + return nullValue; + + // Do verification search at high depths + ss->skipNullMove = true; + Value v = depth-R < ONE_PLY ? qsearch(pos, ss, beta-1, beta, DEPTH_ZERO) + : search(pos, ss, beta-1, beta, depth-R, false); + ss->skipNullMove = false; + + if (v >= beta) + return nullValue; + } } // Step 9. ProbCut (skipped when in check)