anchor.diff:      if ((aCenter.Y <= BestLoc.Y) AND (aCenter.Y >= BestLoc.Y-1)) AND ((aCenter.X <= BestLoc.X) AND (aCenter.X >= BestLoc.X-2)) then
         aCenter := KMPoint(BestLoc.X-1, BestLoc.Y+1);
       AddPlan(ht_Woodcutters, BestLoc, aCenter, aChopOnly);
  +    if aChopOnly then // Lock chop only woodcutter (it can be added in next tick and it is placed out of avoid building areas)
  +      gHands[fOwner].AI.CityManagement.Builder.LockHouseLoc(ht_Woodcutters, BestLoc);
     end;
     Result := Output;
   end;
  
positive.code:     for HT := HOUSE_MIN to HOUSE_MAX do
        for I := 0 to fPlannedHouses[HT].Count - 1 do
          if (not aOnlyPlaced OR (fPlannedHouses[HT].Plans[I].Placed))     // Only placed houses?
             AND not fPlannedHouses[HT].Plans[I].RemoveTreeInPlanProcedure // Ignore Remove tree in plan procedure because there is not build road
             AND not KMSamePoint(fPlannedHouses[HT].Plans[I].Loc, aNewLoc) // Ignore itself
             AND (not (HT = ht_Woodcutters) OR not fPlannedHouses[HT].Plans[I].ChopOnly) then // Chop only woodcutters are planned without road connection so skip it
          begin
  
negative.code:   begin
      if (aIdx >= Count) then
        Exit;
      if not Plans[aIdx].Placed then // Unlock house plan
        gHands[fOwner].AI.CityManagement.Builder.UnLockHouseLoc(aHT, Plans[aIdx].Loc);
      Count := Count - 1;
      Plans[aIdx] := Plans[Count];
    end;
  