anchor.diff:  
       NodeStorage: TPathMapNodeStorage;
   
  -    StartPoint: TWPoint;
  -    FinishPoint: TWPoint;
  +    StartPoint: TCPFPoint;
  +    FinishPoint: TCPFPoint;
     end;
   
     // main path finding class
  
positive.code:   TPathMapNode = packed record
      SortValue: Cardinal; // path + heuristics to start point
      Path: Cardinal; // path from finish point to the cell
      Coordinates: TWPoint;
      Prev, Next: PPathMapNode;
      case Integer of
      0: (
           Mask: Byte;
           ParentAndFlags: Byte{Parent:3; WayDeltaId:2; Way:3};
           ParentMask: Byte;
           Tile: Byte;
         );
  
negative.code: 
  
  type
    TYXSmallPoint = record
      y: SmallInt;
      x: SmallInt;
    end;
  
    TChildArray = array[0..7] of Word;
    PChildArray = ^TChildArray;
  
  const
    _0 = (1 shl 0);
    _1 = (1 shl 1);
    _2 = (1 shl 2);
    _3 = (1 shl 3);
    _4 = (1 shl 4);
    _5 = (1 shl 5);
    _6 = (1 shl 6);
    _7 = (1 shl 7);
  
    POINT_OFFSETS: array[0..7] of TYXSmallPoint = (
      {0} (y: -1; x: -1),
      {1} (y: -1; x:  0),
      {2} (y: -1; x: +1),
      {3} (y:  0; x: +1),
      {4} (y: +1; x: +1),
      {5} (y: +1; x:  0),
      {6} (y: +1; x: -1),
      {7} (y:  0; x: -1)
    );
  
    POINT_OFFSETS_INVERT: array[0..7] of TYXSmallPoint = (
      {0 --> 4} (y: +1; x: +1),
      {1 --> 5} (y: +1; x:  0),
      {2 --> 6} (y: +1; x: -1),
      {3 --> 7} (y:  0; x: -1),
      {4 --> 0} (y: -1; x: -1),
      {5 --> 1} (y: -1; x:  0),
      {6 --> 2} (y: -1; x: +1),
      {7 --> 3} (y:  0; x: +1)
    );
  
    CHILD_ARRAYS: array[0..15{Parent*2 + FLAG_CLOCKWISE}] of TChildArray = (
  