+
+ // Only move extension
+ if ( forbiddenMove == MOVE_NONE
+ && moveCount == 1
+ && ext < OnePly
+ && depth >= 8 * OnePly
+ && tte
+ && (tte->type() & VALUE_TYPE_LOWER)
+ && tte->move() != MOVE_NONE
+ && tte->depth() >= depth - 3 * OnePly)
+ {
+ Value ttValue = value_from_tt(tte->value(), ply);
+ if (abs(ttValue) < VALUE_KNOWN_WIN)
+ {
+ Value excValue = search(pos, ss, ttValue - OnlyMoveMargin, depth / 2, ply, false, threadID, tte->move());
+ if (excValue < ttValue - OnlyMoveMargin)
+ ext = OnePly;
+ }
+ }
+