anchor.diff:    TKMCityPredictor = class
     private
       fOwner: TKMHandIndex;
  -    fCornDelay: Cardinal;
       fMaxSoldiersInMin: Single;
       fCityStats: TCityStats;
       fWareBalance: TWareBalanceArray;
  +    fFarmBuildHistory: THouseBuildHistory;
       fSetup: TKMHandAISetup;
   
       procedure UpdateWareProduction(aWT: TKMWareType);
  
positive.code:   fCityStats.CitizensCnt := Round(  Max(0,Min(aBuildCnt,4000)-1500)*0.052+70  ); // Min cnt of citizens is 70 and max 200
    fCityStats.WarriorsCnt := Round(  Max(0,Min(aBuildCnt,4000)-1500)*0.042+50  ); // Min cnt of soldiers is 50 and max 150
    UpdateWareBalance(True);
  
    // Corn delay to stop build swine or mill before farm (another way is to check if we have corn but it does not work well)
    fCornDelay := Byte(gHands[fOwner].Stats.GetWareBalance(wt_Corn) > 30);
  end;
  
  
  procedure TKMCityPredictor.UpdateState(aTick: Cardinal);
  const
    WEAP_WORKSHOP_DELAY = 40 * 60 * 10;
  var
    HT: TKMHouseType;
  begin
    for HT := Low(RequiredHouses) to High(RequiredHouses) do
      RequiredHouses[HT] := 0;
  
  
negative.code: uses
    Classes, Graphics, KromUtils, Math, SysUtils,
    KM_Defaults, KM_Points, KM_CommonClasses, KM_CommonTypes,
    KM_AISetup, KM_ResHouses, KM_ResWares, KM_HandStats;
  
  type
    TWareBalance = record
  