if (nullValue >= beta)
{
+ // Do not return unproven mate scores
+ if (nullValue >= value_mate_in(PLY_MAX))
+ nullValue = beta;
+
if (depth < 6 * OnePly)
- return beta;
+ return nullValue;
// Do zugzwang verification search
Value v = search(pos, ss, beta, depth-5*OnePly, ply, false, threadID);
if (v >= beta)
- return beta;
+ return nullValue;
} else {
// The null move failed low, which means that we may be faced with
// some kind of threat. If the previous move was reduced, check if