anchor.diff:      L, D, adj, hMid: Integer;
       TileBasic: TKMTerrainTileBasic;
       terKind: TKMTerrainKind;
  -    CornersTerKinds: TKMTerrainKindsArray;
  +    cornersTerKinds: TKMTerrainKindCorners;
       tileOwner: TKMHandID;
     begin
       tileOwner := PLAYER_NONE;
  
positive.code: 
  function TKMTerrain.TileGoodForGoldMine(X,Y: Word): Boolean;
  var
    CornersTKinds: TKMTerrainKindsArray;
  begin
    Result :=
      (fTileset.TileIsGoodForGoldMine(Land[Y,X].BaseLayer.Terrain)
        and (Land[Y,X].BaseLayer.Rotation mod 4 = 0)); //only horizontal mountain edges allowed
    if not Result then
    begin
      CornersTKinds := TileCornersTerKinds(X, Y);
      Result :=
            (CornersTKinds[0] in [tkGold, tkGoldMount])
        and (CornersTKinds[1] in [tkGold, tkGoldMount])
        and fTileset.TileIsRoadable(BASE_TERRAIN[CornersTKinds[2]])
        and fTileset.TileIsRoadable(BASE_TERRAIN[CornersTKinds[3]]);
    end;
  end;
  
  
negative.code: function TKMTerrain.TileHasOnlyTerrainKind(X, Y: Word; const aTerKind: TKMTerrainKind): Boolean;
  var
    I: Integer;
    cornersTerKinds: TKMTerrainKindCorners;
  begin
    Result := True;
    GetTileCornersTerKinds(X, Y, cornersTerKinds);
    for I := 0 to 3 do
      if cornersTerKinds[I] <> aTerKind then
        Exit(False);
  end;
  
  