anchor.diff:  begin
     Xc:=trunc(inX);
     Yc:=trunc(inY);
  +  if not TileInMapCoords(Xc,Yc) then
  +  Tmp1:=0;
     Tmp1:=mix(fTerrain.Land[Yc  ,Xc+1].Height, fTerrain.Land[Yc  ,Xc].Height, frac(InX));
     Tmp2:=mix(fTerrain.Land[Yc+1,Xc+1].Height, fTerrain.Land[Yc+1,Xc].Height, frac(InX));
     Result:=mix(Tmp2, Tmp1, frac(InY));
  
positive.code:   function TileIsWalkable(Loc:TKMPoint):boolean;
    function TileIsRoadable(Loc:TKMPoint):boolean;
    procedure RevealCircle(Pos:TKMPoint; Radius,Amount:word; PlayerID:TPlayerID);
    function CheckRevelation(X,Y:word; PlayerID:TPlayerID):single;
    procedure UpdateBorders(Loc:TKMPoint);
    procedure FlattenTerrain(Loc:TKMPoint);
  
negative.code:   inc(k);
    Nodes[k-1]:=Nodes[NodeCount-1];
    NodeCount:=k;
    end;}
  
    //for i:=1 to NodeCount do
    //  Assert(TileInMapCoords(Nodes[i-1].X,Nodes[i-1].Y));
  