anchor.diff:    // failure hot node
     FNodes.HotPool.Last.Path := SORTVALUE_LIMIT;
     FNodes.HotPool.Last.SortValue := SORTVALUE_LIMIT;
  -  Cardinal(FNodes.HotPool.Last.Coordinates) := High(Cardinal) and (not FLAG_EXCLUDED_COORDINATES);
  +  Cardinal(FNodes.HotPool.Last.Coordinates) := High(Cardinal) and (not COORDINATES_FLAG_EXCLUDED);
     FNodes.HotPool.Last.NodeInfo := FLAG_KNOWN_PATH {+ not FLAG_ATTAINABLE};
   
     // unlocked heuristed node
  
positive.code:       repeat
          if (Node.NodeInfo and FLAGS_KNOWN_ATTAINABLE <> FLAG_KNOWN_PATH) then
          begin
            Index := (Index and MASK_BITS_15) + (Index and MASK_BITS_16_30) shr 1;
            Item := @Excluded[Index];
            case (Item.Count and 15) of
              5..15: {only 8} goto next_excluded;
  
negative.code:         ForgetAttainableNodes(Points.X, Points.Y);
          Node := AllocateHeuristedNode(Points.X, Points.Y);
        end else
        if (Cardinal(Node.Coordinates) and COORDINATES_FLAG_EXCLUDED = COORDINATES_FLAG_EXCLUDED) then
        begin
          // already marked as excluded
          Item.Node := Node;
          Index := Cardinal(Node.Coordinates);
          Index := (Index and COORDINATES_MASK_EXCLUDED_LOW) + (Index and COORDINATES_MASK_EXCLUDED_HIGH) shr 1;
  
          if (Index < LastExcludesCount) then
          begin
  