anchor.diff:        // Calculate required count of specific unit type
         UnitEval := gAIFields.Eye.ArmyEvaluation.UnitEvaluation[UT, True];
         with UnitEval do
  -        UnitStrength := Attack + AttackHorse * Byte(aGT = gt_Mounted)
  -                        * ifthen( (aGT = gt_Ranged), DefenceProjectiles, Defence )
  -                        * HitPoints;
  -
  -      UnitsRequired := Power(EnemyStrength / UnitStrength, 1/3) * IfThen( (I = 1), aIronRatio, 1-aIronRatio );
  +        UnitStrength := Max(0, Attack + AttackHorse * Byte(aGT = gt_Mounted)
  +                               * ifthen( (aGT = gt_Ranged), DefenceProjectiles, Defence )
  +                               * HitPoints);
  +
  +      UnitsRequired := Power(EnemyStrength / UnitStrength, 1/3) * ifthen( (I = 1), aIronRatio, 1-aIronRatio );
         fWarriorsDemands[UT] := fWarriorsDemands[UT] + Max(0, Round(UnitsRequired)   );
         if (I = 2) then // In case that ut_AxeFighter is not blocked skip militia
           break;
  
positive.code:   KM_CityPredictor, KM_CityBuilder, KM_CityPlanner, KM_AIArmyEvaluation;
  
  var
    GA_MANAGER_CheckUnitCount_SerfCoef    : Single = 0.3677794933;
    GA_MANAGER_CheckUnitCount_SerfLimit   : Single = 4.057023287;
  
  type
    TKMWarfareArr = array[WARFARE_MIN..WARFARE_MAX] of record
  
negative.code: begin
    // DELETE DEBUG DELETE DEBUG DELETE DEBUG DELETE DEBUG DELETE DEBUG DELETE DEBUG DELETE DEBUG DELETE DEBUG DELETE DEBUG DELETE DEBUG DELETE DEBUG DELETE DEBUG
    //SetKaMSeed(666);
    //gGame.GameOptions.Peacetime := 90;
    //fSetup.ApplyAgressiveBuilderSetup(True);
    // DELETE DEBUG DELETE DEBUG DELETE DEBUG DELETE DEBUG DELETE DEBUG DELETE DEBUG DELETE DEBUG DELETE DEBUG DELETE DEBUG DELETE DEBUG DELETE DEBUG DELETE DEBUG
  
  