anchor.diff:      if fBuildNodes[I].Active then
         cnt := cnt + 1;
     aBalanceText := aBalanceText + '|Active nodes:' + IntToStr(cnt);
  -  if (fPredictor.WareBalance[wt_Stone].Exhaustion < GA_BUILDER_STONE_SHORTAGE) then
  +  if fStoneShortage then
       aBalanceText := aBalanceText + '|Stone shortage';
  -  if ((gHands[fOwner].Stats.GetWareBalance(wt_Trunk) + gHands[fOwner].Stats.GetWareBalance(wt_Wood) / 2) / Max(0.1,fPredictor.WareBalance[wt_Trunk].ActualConsumption) < GA_BUILDER_TRUNK_SHORTAGE) then
  +  if fTrunkShortage then
       aBalanceText := aBalanceText + '|Trunk shortage';
  -  if (fPredictor.WareBalance[wt_Wood].Exhaustion < GA_BUILDER_WOOD_SHORTAGE) then
  -    aBalanceText := aBalanceText + 'Wood shortage';
  -  if (fPredictor.WareBalance[wt_Gold].Exhaustion < GA_BUILDER_GOLD_SHORTAGE) then
  +  if fWoodShortage then
  +    aBalanceText := aBalanceText + '|Wood shortage';
  +  if fGoldShortage then
       aBalanceText := aBalanceText + '|Gold shortage';
   end;
   
  
positive.code: uses
    KromUtils, Math, SysUtils,
    KM_Defaults, KM_CommonClasses, KM_CommonUtils, KM_Points,
    KM_ResHouses, KM_ResWares, KM_BuildList,
    KM_AIInfluences, KM_CityPlanner, KM_CityPredictor, KM_Eye;
  
  
  
negative.code:     HT: TKMHouseType;
      ActualHouseSet: TSetOfHouseType;
    begin
      if fStoneShortage then
        ActualHouseSet := RESERVATION_StoneShortage
      else if fGoldShortage then
        ActualHouseSet := RESERVATION_GoldShortage
      else if fTrunkShortage then
        ActualHouseSet := RESERVATION_TrunkShortage
      else if fWoodShortage then
        ActualHouseSet := RESERVATION_WoodShortage
      else
        ActualHouseSet := RESERVATION_FullSet;
  