anchor.diff:      HT: TKMHouseType;
       ActualHouseSet: TSetOfHouseType;
     begin
  -    if StoneShortage then
  +    if fStoneShortage then
         ActualHouseSet := RESERVATION_StoneShortage
  -    else if GoldShortage then
  +    else if fGoldShortage then
         ActualHouseSet := RESERVATION_GoldShortage
  -    else if TrunkShortage then
  +    else if fTrunkShortage then
         ActualHouseSet := RESERVATION_TrunkShortage
  -    else if WoodShortage then
  +    else if fWoodShortage then
         ActualHouseSet := RESERVATION_WoodShortage
       else
         ActualHouseSet := RESERVATION_FullSet;
  
positive.code:   //BUILD_ORDER_WARE: array[0..8] of TKMWareType = (wt_Stone, wt_Gold, wt_GoldOre, wt_Coal, wt_Trunk, wt_Wood, wt_Corn, wt_Pig, wt_Sausages);
    BUILD_ORDER_WARE: array[0..5] of TKMWareType = (wt_Stone, wt_Gold, wt_GoldOre, wt_Coal, wt_Trunk, wt_Wood);
  var
    StoneShortage, WoodShortage, TrunkShortage, GoldShortage: Boolean;
    MaxPlans: Integer;
    RequiredHouses: TRequiredHousesArray;
    WareBalance: TWareBalanceArray;
  
negative.code: function TKMCityBuilder.BuildHouse(aUnlockProcedure, aHouseReservation, aIgnoreExistingPlans: Boolean; aHT: TKMHouseType): TConstructionState;
  var
    Output: TConstructionState;
    FieldsComplete, Check: Boolean;
    I, Node1Idx, Node2Idx, HouseIdx: Integer;
    Loc: TKMPoint;
  begin
  