anchor.diff:  
       // Decrease strength by owner's existing units
       with AllyEval[antiGT] do
  -      EnemyStrength := EnemyStrength - (Attack + AttackHorse * Byte(aGT = gt_Mounted))
  -                                        * ifthen( (aGT = gt_Ranged), DefenceProjectiles, Defence )
  -                                        * HitPoints;
  +      EnemyStrength := Max(0, EnemyStrength - (Attack + AttackHorse * Byte(aGT = gt_Mounted))
  +                                               * ifthen( (aGT = gt_Ranged), DefenceProjectiles, Defence )
  +                                               * HitPoints);
   
       // Compute unit requirements
       for I := 1 to 3 do
  
positive.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 := 70;
    //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
  
  
negative.code:       // Calculate required count of specific unit type
        UnitEval := gAIFields.Eye.ArmyEvaluation.UnitEvaluation[UT, True];
        with UnitEval do
          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;
  