anchor.diff:  curUnit : TKMUnit;
   begin
     case aMat of
  -    rdStone: Result := 3*fTerrain.TileIsStone(X+1, Y+1); //3 stone produced by each time
  -    rdCoal:  Result := fTerrain.TileIsCoal(X+1, Y+1);
  -    rdIron:  Result := fTerrain.TileIsIron(X+1, Y+1);
  -    rdGold:  Result := fTerrain.TileIsGold(X+1, Y+1);
  +    rdStone: Result := 3*fTerrain.TileIsStone(X, Y); //3 stone produced by each time
  +    rdCoal:  Result := fTerrain.TileIsCoal(X, Y);
  +    rdIron:  Result := fTerrain.TileIsIron(X, Y);
  +    rdGold:  Result := fTerrain.TileIsGold(X, Y);
       rdFish:  begin
                  curUnit := fTerrain.Land[Y + 1, X + 1].IsUnit;
                  if (curUnit <> nil) and (curUnit is TKMUnitAnimal) and (curUnit.UnitType = ut_Fish) then
  
positive.code:       fArea[R,Y,X] := AreaID;
        Inc(AreaAmount);
        //We must test diagonals for at least fish since they can be taken from water through diagonals
        if X-1 >= 0 then
        begin
          if Y-1 >= 0 then               FillArea(X-1, Y-1);
                                         FillArea(X-1, Y);
          if Y+1 <= fTerrain.MapY-1 then FillArea(X-1, Y+1);
        end;
  
        if Y-1 >= 0 then                 FillArea(X, Y-1);
        if Y+1 <= fTerrain.MapY-1 then   FillArea(X, Y+1);
  
        if X+1 <= fTerrain.MapX-1 then
        begin
          if Y-1 >= 0 then               FillArea(X+1, Y-1);
                                         FillArea(X+1, Y);
          if Y+1 <= fTerrain.MapY-1 then FillArea(X+1, Y+1);
        end;
  
negative.code: function TKMDeposits.TileDepositExists(aMat: TRawDeposit; X,Y: Word) : Boolean;
  begin
    if aMat = rdFish then
      Result := fTerrain.TileIsWater(KMPoint(X,Y))
    else
      Result := TileDeposit(aMat,X,Y) > 0;
  end;
  