anchor.diff:          for I := Low(CanMineCnt) to High(CanMineCnt) do
             with fPlannedHouses[HT].Plans[I] do
               for K := 0 to StoneLocs.Count - 1 do
  -              if (KMDistanceAbs(Loc,StoneLocs.Items[K]) < MAX_DIST) then
  +              if (KMDistanceAbs(Loc,StoneLocs.Items[K]) <= gRes.Units[utStoneCutter].MiningRange) then
                 begin
                   Inc(CanMineCnt[I],StoneLocs.Tag[K]);
                   Inc(StoneLocs.Tag2[K]);
  
positive.code: procedure TKMCityPlanner.CheckStoneReserves(aForceToPlaceQuarry: Boolean; aReqQuarryCnt: Integer);
  const
    HT = htQuary;
    MAX_DIST = 15;
    MIN_CNT = 60; // possible to mine X layers of stone tile = X * 3 stones
  var
    CanBeReplaced: Boolean;
  
negative.code:           CanBeReplaced := True;
            with fPlannedHouses[HT].Plans[LowestIdx] do
              for I := StoneLocs.Count - 1 downto 0 do
                if (StoneLocs.Tag2[I] < 3) AND (KMDistanceAbs(Loc,StoneLocs.Items[I]) <= gRes.Units[utStoneCutter].MiningRange) then
                begin
                  CanBeReplaced := False;
                  break;
  