anchor.diff:            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]) < MAX_DIST) then
  +              if (StoneLocs.Tag2[I] < 3) AND (KMDistanceAbs(Loc,StoneLocs.Items[I]) <= gRes.Units[utStoneCutter].MiningRange) then
                 begin
                   CanBeReplaced := False;
                   break;
  
positive.code:         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
                begin
                  Inc(CanMineCnt[I],StoneLocs.Tag[K]);
                  Inc(StoneLocs.Tag2[K]);
  
negative.code: procedure TKMCityPlanner.CheckStoneReserves(aForceToPlaceQuarry: Boolean; aReqQuarryCnt: Integer);
  const
    HT = htQuary;
    MIN_CNT = 60; // possible to mine X layers of stone tile = X * 3 stones
  var
    CanBeReplaced: Boolean;
  