- // Analyse the enemy's safe distance checks for sliders and knights
- safe = ~(ei.attackedBy[Us][ALL_PIECES] | pos.pieces(Them));
+ // Analyse the safe enemy's checks which are possible on next move...
+ safe = ~(ei.attackedBy[Us][ALL_PIECES] | pos.pieces(Them));
+
+ // ... and some other potential checks, only requiring the square to be
+ // safe from pawn-attacks, and not being occupied by a blocked pawn.
+ other = ~( ei.attackedBy[Us][PAWN]
+ | (pos.pieces(Them, PAWN) & shift_bb<Up>(pos.pieces(PAWN))));