anchor.diff:  function TKMDeposits.TileDepositExists(aMat: TRawDeposit; X,Y: Word) : Boolean;
   begin
     if aMat = rdFish then
  -    Result := fTerrain.TileIsWater(KMPoint(X+1,Y+1))
  +    Result := fTerrain.TileIsWater(KMPoint(X,Y))
     else
       Result := TileDeposit(aMat,X,Y) > 0;
   end;
  
positive.code:     SetLength(AreaPos, fAreaCount[R]);
  
      //Fill array of resource amounts per area
      for I := 0 to fTerrain.MapY - 1 do
      for K := 0 to fTerrain.MapX - 1 do
      if fArea[R, I, K] <> 0 then
      begin
        //Do -1 to make the lists 0 based
  
negative.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 >= 1 then
        begin
          if Y-1 >= 1 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 >= 1 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 >= 1 then               FillArea(X+1, Y-1);
                                         FillArea(X+1, Y);
          if Y+1 <= fTerrain.MapY-1 then FillArea(X+1, Y+1);
        end;
  