| 
					
				 | 
			
			
				@@ -354,9 +354,10 @@ void chessy::generateCastling(const ChessGame& cg, std::vector<Move>& moves) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     Bitboard allOccupied = b.getOccupied(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (cg.getCanCastleKingSide(side)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Bitboard target = king.bits >> 2; // move king to the right 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Bitboard rook = king.bits << 3; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Bitboard rook = king.bits >> 3; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Bitboard rookTarget = king.bits >> 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (!(target & allOccupied) && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if ((rook & b.getRooks<side>()) && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            !(target & allOccupied) && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             !(rookTarget & allOccupied)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             moves.emplace_back(king.getLeastSignificantBit(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 target.getLeastSignificantBit(), true); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -364,9 +365,10 @@ void chessy::generateCastling(const ChessGame& cg, std::vector<Move>& moves) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (cg.getCanCastleQueenSide(side)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Bitboard target = king.bits << 2; // move king to the left 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Bitboard rook = king.bits >> 3; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Bitboard rook = king.bits << 4; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Bitboard rookTarget = king.bits << 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (!(target & allOccupied) && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if ((rook & b.getRooks<side>()) && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            !(target & allOccupied) && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             !(rookTarget & allOccupied)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             moves.emplace_back(king.getLeastSignificantBit(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 target.getLeastSignificantBit(), true); 
			 |