anchor.diff:        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
  +      if X-1 >= 1 then
         begin
  -        if Y-1 >= 0 then               FillArea(X-1, Y-1);
  +        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 >= 0 then                 FillArea(X, Y-1);
  +      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 >= 0 then               FillArea(X+1, Y-1);
  +        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;
  
positive.code: 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);
      rdFish:  begin
                 curUnit := fTerrain.Land[Y + 1, X + 1].IsUnit;
                 if (curUnit <> nil) and (curUnit is TKMUnitAnimal) and (curUnit.UnitType = ut_Fish) then
  
negative.code:       //Increase amount of resource in area
        Inc(fAreaAmount[R, AreaID], TileDeposit(R, K, I));
  
        //Accumulate area locations
        AreaPos[AreaID].X := AreaPos[AreaID].X + K;
        AreaPos[AreaID].Y := AreaPos[AreaID].Y + I;
        Inc(AreaSize[AreaID]);
      end;
  
  