anchor.diff:          end else
             SetErrorNSetResult(tctObject, hasErrorOnTile, errorTypesOnTile, Result);
         end;
  -    end else
  +    end
  +    else
  +    if VerticeInMapCoords(T.X, T.Y) then
  +      // Update height if needed
  +      UpdateHeight(T, heightRect, hasErrorOnTile, errorTypesOnTile)
  +    else
       begin
         hasErrorOnTile := True;
         //When tile is out of map coordinates we treat it as all operations failure
  
positive.code:       end;
  
        // Update height if needed
        if T.UpdateHeight then
        begin
          if InRange(T.Height, 0, 100) then
          begin
            if TrySetTileHeight(T.X, T.Y, T.Height, False) then
              UpdateRect(heightRect, T.X, T.Y)
            else
              SetErrorNSetResult(tctHeight, hasErrorOnTile, errorTypesOnTile, Result);
          end else
            SetErrorNSetResult(tctHeight, hasErrorOnTile, errorTypesOnTile, Result);
        end;
  
        //Update object if needed
        if T.UpdateObject then
  
negative.code:     aResult := False;
    end;
  
    procedure UpdateHeight(aTileBrief: TKMTerrainTileBrief; aHeightRect: TKMRect; aHasErrorOnTile: Boolean; aErrorTypesOnTile: TKMTileChangeTypeSet);
    begin
      // Update height if needed
      if aTileBrief.UpdateHeight then
      begin
        if InRange(aTileBrief.Height, 0, 100) then
        begin
          if TrySetTileHeight(aTileBrief.X, aTileBrief.Y, aTileBrief.Height, False) then
            UpdateRect(aHeightRect, aTileBrief.X, aTileBrief.Y)
          else
            SetErrorNSetResult(tctHeight, aHasErrorOnTile, aErrorTypesOnTile, Result);
        end else
          SetErrorNSetResult(tctHeight, aHasErrorOnTile, aErrorTypesOnTile, Result);
      end;
    end;
  
  var 
    I, J, terr, rot: Integer;
    T: TKMTerrainTileBrief;
  