- // Extra penalty for a quiet TT move in previous ply when it gets refuted
- if ((ss-1)->moveCount == 1 && !pos.captured_piece())
- update_cm_stats(ss-1, pos.piece_on(prevSq), prevSq, penalty(depth));
+ // Extra penalty for a quiet TT move in previous ply when it gets refuted
+ if ((ss-1)->moveCount == 1 && !pos.captured_piece())
+ update_cm_stats(ss-1, pos.piece_on(prevSq), prevSq, -stat_bonus(depth + ONE_PLY));
+ }
+ // Penalty for a quiet ttMove that fails low
+ else if (!pos.capture_or_promotion(ttMove))
+ {
+ Value penalty = -stat_bonus(depth + ONE_PLY);
+ thisThread->history.update(pos.side_to_move(), ttMove, penalty);
+ update_cm_stats(ss, pos.moved_piece(ttMove), to_sq(ttMove), penalty);
+ }