anchor.diff:        Exit;
       end;
   
  +    if (S.X = FinishX) and (S.Y = FinishY) then
  +      FinishX := -1{finish excluded flag};
  +
       Inc(S);
     end;
   
  -  // no start points case
  -  if (Params.StartsCount = 0) then
  +  // no start points or finish excluded case
  +  if (Params.StartsCount = 0) or (FinishX < 0) then
     begin
       ResultPath := @Result;
       ResultPath.Index := 0;
  
positive.code:   end;
  
    // start is finish case
    FinishX := Params.Finish.X;
    FinishY := Params.Finish.Y;
    S := Params.Starts;
    for i := Params.StartsCount downto 1 do
    begin
  
negative.code:   ResultPath.Points := FActualInfo.FoundPath.Buffer.Memory;
    ResultPath.Count := FActualInfo.FoundPath.Length;
    ResultPath.Distance := FActualInfo.FoundPath.Distance;
    if (ResultPath.Count = 0) then
      ResultPath.Points := nil;
  end;
  
  function TTileMap.FindPath(const Params: TTileMapParams): TTileMapPath;
  begin
  