anchor.diff:        Eval.fUnitTypesPower[i] := 0.0;
         continue;
       end;
  -    UnitSum := 0.0;
  +    PowerSum := 0.0;
       for j := ut_Militia to ut_Barbarian do begin
         EnemyQty := Stats.GetUnitQty(j);
  -      if EnemyQty <> 0 then
  -        UnitSum := UnitSum + SelfQty * UnitStatEvals[i,j,1] / EnemyQty * (EnemyQty / EnemySize);
  +      PowerSum := PowerSum + UnitStatEvals[i,j,1] * EnemyQty;
       end;
  -    Eval.fUnitTypesPower[i] := UnitSum;
  +    if PowerSum = 0 then Eval.fUnitTypesPower[i] := 0.0
  +    else Eval.fUnitTypesPower[i] := SelfQty / PowerSum;
       Eval.fPower := Eval.fPower + Eval.fUnitTypesPower[i];
     end;
   end;
  
positive.code: type
    TKMEvaluation = class
    public
      fEmemyIndex : TPlayerIndex; // to make sure on get
      fVictoryChance : Single;
      fPower : Single;
      fUnitTypesPower : array [ut_Militia..ut_Barbarian] of Single;
  
negative.code: procedure TKMArmyEvaluation.EvaluatePower(Stats : TKMPlayerStats; PlayerIndex : TPlayerIndex);
  var
    SelfStats : TKMPlayerStats;
    Eval : TKMEvaluation;
    i, j : TUnitType;
    EnemyQty, SelfQty : Integer;
    PowerSum : Single;
  begin
    SelfStats := (fSelfPlayer as TKMPlayer).Stats;
    Eval := fEvals[PlayerIndex];
    Eval.fPower := 0.0;
    for i := ut_Militia to ut_Barbarian do begin
      SelfQty := SelfStats.GetUnitQty(i);
  