anchor.diff:    // Build woodcutter when is forest near new house (or when is woodcutter destroyed but this is not primarly intended)
     HT := htWoodcutters;
     if (gHands[fOwner].Stats.GetHouseTotal(HT) < fPlanner.PlannedHouses[HT].Count)
  -    AND (not fGoldShortage OR fTrunkShortage)
  +    AND ((fTrunkShortage OR not fGoldShortage) AND not fWoodShortage)
       AND not fStoneShortage
       AND (AddToConstruction(HT, True, True) = cs_HousePlaced) then
     begin
  
positive.code:         // Make sure that next cycle will not scan this house in this tick
          RequiredHouses[ PRODUCTION[WT] ] := 0;
          // Try build required houses
          if (AddToConstruction(PRODUCTION[WT], False, True) = cs_HousePlaced) then
          begin
            MaxPlans := 0; // This house is critical so dont plan anything else
            Exit;
  
negative.code:     begin
        Overflow := Overflow + 1;
        BestGain := 0;
        for I := MinIdx to MaxIdx do
          if (ReservationsCntArr[ RESERVATION_FullSet[I] ] > 0) then
          begin
            HT := RESERVATION_FullSet[I];
  