anchor.diff:    if not CanPlaceHouse(aLoc, aHT, aIgnoreTrees) then
       Exit;
   
  +  // Make sure that we dont put new house into another plan (just entrance is enought because houses have similar size)
  +  if gHands[fOwner].BuildList.HousePlanList.HasPlan(KMPoint(aLoc.X,aLoc.Y)) then
  +    Exit;
  +
     // Scan tiles inside house plan
     for I := Low(fHousesMapping[aHT].Tiles) to High(fHousesMapping[aHT].Tiles) do
     begin
  
positive.code:   private
      fOwner: TKMHandIndex;
      fHousesMapping: THouseMappingArray;
      fGoldMines, fIronMines, fStoneMiningTiles: TKMPointList;
      fCoalClusters: TKMList;
  
      fArmyPresence: TKMArmyPresence;
  
      POM: TKMPointList;
  
      procedure InitHousesMapping();
  
      function CheckResourcesNearMine(aLoc: TKMPoint; aHT: THouseType): Boolean;
    public
      constructor Create();
  
negative.code:   X,Y: Integer;
    Loc: TKMPoint;
    VisitArr: TKMByte2Array;
    SearchResource: TKMSearchResource;
  begin
    SetLength(VisitArr, gTerrain.MapY, gTerrain.MapX);
    for Y := Low(VisitArr) to High(VisitArr) do
    for X := Low(VisitArr[Y]) to High(VisitArr[Y]) do
  