anchor.diff:    for Dir := Low(fHousesMapping[aHT].Surroundings[I]) to High(fHousesMapping[aHT].Surroundings[I]) do
     for K := Low(fHousesMapping[aHT].Surroundings[I,Dir]) to High(fHousesMapping[aHT].Surroundings[I,Dir]) do
     begin
  +    X := aLoc.X + fHousesMapping[aHT].Surroundings[I,Dir,K].X;
       Y := aLoc.Y + fHousesMapping[aHT].Surroundings[I,Dir,K].Y;
  -    X := aLoc.X + fHousesMapping[aHT].Surroundings[I,Dir,K].X;
       Point := KMPoint(X,Y);
       // Surrounding tiles must not be a house
       for PL := 0 to gHands.Count - 1 do
  
positive.code:     end
      // For "normal" houses there must be at least 1 side also free (on the left or right from house plan)
      else if (Dir = dirE) then // Direction east
        RightSideFree := RightSideFree AND CheckRoad(X,Y)
      else if (Dir = dirW) then // Direction west
        LeftSideFree := LeftSideFree AND CheckRoad(X,Y);
      if not (LeftSideFree AND RightSideFree) then
        Exit;
    end;
  
negative.code: // aIgnoreTrees = ignore trees inside of house plan
  // aIgnoreLocks = ignore existing house plans inside of house plan tiles
  function TKMEye.CanAddHousePlan(aLoc: TKMPoint; aHT: TKMHouseType; aIgnoreAvoidBuilding: Boolean = False; aIgnoreTrees: Boolean = False; aIgnoreLocks: Boolean = True): Boolean;
    function CanBeRoad(X,Y: Integer): Boolean;
    begin
      Result := (gTerrain.Land[Y, X].Passability * [tpMakeRoads, tpWalkRoad] <> [])
                OR (gHands[fOwner].BuildList.FieldworksList.HasField(KMPoint(X,Y)) <> ftNone) // We dont need strictly road just make sure that it is possible to place something here (and replace it by road later)
                OR (gTerrain.Land[Y, X].TileLock in [tlFieldWork, tlRoadWork]);
    end;
  var
    LeftSideFree, RightSideFree: Boolean;
  