anchor.diff:    begin
       if (Cardinal(S.X) >= MapWidth) or (Cardinal(S.Y) >= MapHeight) then
       begin
  -      RaiseCoordinates(S.X, S.Y, 'start');
  +      with S^ do
  +      RaiseCoordinates(X, Y, 'start');
         Exit;
       end;
   
  
positive.code: 
    {$ifdef CPUX86}
      Params: TTileMapParams;
    {$endif}
    {$ifdef LARGEINT}
      NodeBuffers: PCPFNodeBuffers;
    {$endif}
  begin
    // stack copy parameters to one register save
    {$ifdef CPUX86}Params := _;{$endif}
  
    // test start points coordinates
    MapWidth := Self.Width;
  
negative.code:   Buffer{Node} := StartPoint.Node;
    AttainableNode := StartPoint.AttainableNode;
  
    // process each node
    if (AttainableNode.NodeInfo and FLAG_ATTAINABLE <> 0) then
    begin
      // first heuristed pool node
      Buffer{Node}.Prev := @FNodes.HeuristedPool.First;
      LastPoolNode := FNodes.HeuristedPool.First.Next;
      FNodes.HeuristedPool.First.Next := Buffer{Node};
  
      // retrieve parent mask (unlock)
      // clear sort value
      while (Buffer <> AttainableNode) do
  