anchor.diff:      begin
         MaterialShortage := not aIgnoreWareReserves AND (fWoodShortage OR fTrunkShortage OR fStoneShortage OR fGoldShortage);
         MaterialShortage := MaterialShortage OR (MaxPlace <= 0);
  -      UnlockProcedure := UnlockProcedure OR (aHT = htFarm) OR MaterialShortage; // Farm should be placed outside of forest
  +      UnlockProcedure := UnlockProcedure OR MaterialShortage;
         HouseReservation := MaterialShortage;
         IgnoreExistingPlans := MaterialShortage AND not (aHT in [htWoodcutters, htGoldMine, htIronMine, htCoalMine]);
         //MaterialShortage := False; // Enable / disable pre-building (building without placing house plans when we are out of materials)
  
positive.code:   //fStoneShortage := fStoneShortage OR (gHands[fOwner].Stats.GetWareBalance(wt_Stone) < RequiredStones);
    fTrunkShortage := fTrunkShortage OR (gHands[fOwner].Stats.GetWareBalance(wt_Wood) < RequiredWood);
    MaxPlace := Round((gHands[fOwner].Stats.GetWareBalance(wt_Trunk)*2 + gHands[fOwner].Stats.GetWareBalance(wt_Wood) - RequiredWood) / 3 - 0.5);
  
    if (MaxPlace > 0) then
      CheckHouseReservation();
  
negative.code:   // Woodcutters have huge delay (8 min) + trunk is used only to produce wood -> decide shortage based on actual consumption and reserves
    TrunkBalance := (gHands[fOwner].Stats.GetWareBalance(wt_Trunk) + gHands[fOwner].Stats.GetWareBalance(wt_Wood) / 2) / Max(0.1,WareBalance[wt_Trunk].ActualConsumption);
    if (TrunkBalance < GA_BUILDER_TRUNK_SHORTAGE) then
      fTrunkShortage := True;
  
    // Find place for chop-only woodcutters when we start to be out of wood
    if ((GA_BUILDER_ChHTB_TrunkBalance - TrunkBalance) / GA_BUILDER_ChHTB_TrunkFactor - GetChopOnlyCnt() > 0) then // Max 2 chop-only woodcutters
  