anchor.diff:  begin
     while RemoveFromQueue(X,Y,Idx) do
     begin
  -    Distance := fInfoArr[Idx].Distance + 1;
  +    Distance := fInfoArr[Idx].DistanceInitPoint + 1;
       if (Distance > MAX_DIST)
         OR (fHouseReq.MaxCnt <= fLocs.Count)
         OR (Distance > fHouseReq.MaxDist) then
  
positive.code:   with fInfoArr[aIdx] do
    begin
      VisitedHouse := fVisitIdxHouse;
      Distance := aDistance;
  
      Point := KMPoint(aX,aY);
      if CanBePlacedHouse(Point) then
  
negative.code: begin
    Result := fInfoArr[aPoint.Y*fMapX + aPoint.X].Distance;
  end;
  function TKMBuildFF.GetDistanceInitPoint(const aPoint: TKMPoint): Word;
  begin
    Result := fInfoArr[aPoint.Y*fMapX + aPoint.X].DistanceInitPoint;
  end;
  
  function TKMBuildFF.GetNext(const aY,aX: Word): Word;
  begin
  