anchor.diff:        if (FActualInfo.Sectors = nil) or (FActualInfo.SectorsChanged) then
           ActualizeSectors;
   
  -      FinishSector := PByte(NativeInt(FActualInfo.Sectors) +
  -        NativeInt(Self.Width) * Params.Finish.Y + Params.Finish.X)^;
  +      Store.FinishSector := PByte(NativeInt(FActualInfo.Sectors) +
  +        NativeInt(Width) * Params.Finish.Y + Params.Finish.X)^;
       end else
       begin
         if (FActualInfo.Sectors <> nil) then
           CPFFreeMem(Pointer(FActualInfo.Sectors));
   
  -      FinishSector := SECTOR_EMPTY;
  +      Store.FinishSector := SECTOR_EMPTY;
       end;
   
       // excluded points
  
positive.code:   // each start point find algorithm
    FoundPaths := Params.StartsCount;
    StartPoint := FActualInfo.Starts.Buffer.Memory;
    AttainableAlgorithm := (FoundPaths > 1) or (Self.FCaching);
    for i := Params.StartsCount downto 1 do
    begin
      // sector test
      if (FinishSector <> SECTOR_EMPTY{Self.SectorTest}) then
      begin
        if (FinishSector <> PByte(NativeInt(FActualInfo.Sectors) +
          NativeInt(Self.Width) * StartPoint.Y + StartPoint.X)^) then
          goto path_not_found;
      end;
  
  
negative.code:   FLAG_CACHING = (1 shl 0);
    FLAG_FINISH = (1 shl 1);
    FLAG_CLEAN = (1 shl 2);
    FLAG_TILEWEIGHTS = (1 shl 3);
    FLAG_HEURISTICS = (1 shl 4);
    FLAG_EXCLUDES = (1 shl 5);
    FLAG_STARTS = (1 shl 6);
  
    FLAGS_HEURISTED_POOL = FLAG_CACHING or FLAG_FINISH or FLAG_HEURISTICS;
    FLAGS_UNATTAINABLE_POOL = FLAG_CACHING or FLAG_FINISH or FLAG_TILEWEIGHTS or FLAG_EXCLUDES;
    // FLAGS_HOT_POOL = FLAGS_HEURISTED_POOL / FLAGS_UNATTAINABLE_POOL;
    FLAGS_EXCLUDED_POOL = FLAG_EXCLUDES or FLAGS_HEURISTED_POOL or FLAGS_UNATTAINABLE_POOL;
    FLAGS_ATTAINABLE_NODES = FLAG_CACHING or FLAG_FINISH or FLAG_TILEWEIGHTS or FLAG_EXCLUDES;
  
    CHANGED_FINISH_INTERVAL = 8;
  label
  