anchor.diff:      {$endif}
       case Boolean of
         True: (AttainableNode: PCPFNode; Distance: Double);
  -      False: (Length: NativeUInt; DistanceAsInt64: Int64);
  +      False:(
  +        Length: NativeUInt;
  +        case Boolean of
  +          True: (DistanceAsInt64: Int64);
  +         False: (DistanceLowDword: Cardinal; DistanceHighDword: Integer);
  +      );
     end;
     PCPFStart = ^TCPFStart;
   
  
positive.code:   // allocate start points
    if (Params.StartsCount = 1) and (FActualInfo.Starts.Count = 1) then
    begin
    (* // S := Params.Starts;
      StartPoint := FActualInfo.Starts.Buffer.Memory;
      StartFlags := 0;//(StartPoint.X - S.X) or (StartPoint.Y - S.Y);
  
     // StartPoint.X := S.X;
     // StartPoint.Y := S.Y; *)
     (* with Params.Starts^ do
      begin
        FinishX := X;
        FinishY := Y;
      end;
  
      StartPoint := FActualInfo.Starts.Buffer.Memory;
      (*StartFlags := (StartPoint.X - FinishX) or (StartPoint.Y - FinishY);
      StartPoint.X := FinishX{S.X};
      StartPoint.Y := FinishY{S.Y};*)
  
     (* StartFlags := (StartPoint.X - FinishX);
      StartPoint.X := FinishX{S.X};
      StartFlags := StartFlags or (StartPoint.Y - FinishY);
      StartPoint.Y := FinishY; *)
  
      StartPoint := FActualInfo.Starts.Buffer.Memory;
      with Params.Starts^ do
      begin
        StartFlags := (StartPoint.X - X) or (StartPoint.Y - Y);
  
        StartPoint.X := X;
        StartPoint.Y := Y;
      end;
  
     // StartFlags := 0;
  
    end else
    begin
      StartFlags := NativeUInt(not ActualizeStarts(Params.Starts, Params.StartsCount, True{Flags???}));
  
negative.code:   end;
  
    // test finish point coordinates
    FinishX := Params.Finish.X;
    {$ifNdef CPUX86}
    FinishY := Params.Finish.Y;
    {$endif}
    if (Cardinal(FinishX) >= MapWidth) or (Cardinal({$ifdef CPUX86}Params.Finish.Y{$else}FinishY{$endif}) >= MapHeight) then
    begin
      RaiseCoordinates(Params.Finish.X, Params.Finish.Y, 'finish');
      Exit;
    end;
  
    // pathless finish tile
    Cell := @FInfo.CellArray[Integer(MapWidth) * {$ifdef CPUX86}Params.Finish.Y{$else}FinishY{$endif} + FinishX];
    CellInfo := Cell.NodePtr;
    if (CellInfo and NODEPTR_FLAG_ALLOCATED <> 0) then
  