anchor.diff:  
   procedure TKMChart.Paint;
   const
  -  IntervalCount: array [0..9] of Word = (1, 5, 10, 50, 100, 500, 1000, 5000, 10000, 50000);
  -  IntervalTime: array [0..10] of Word = (30, 1*60, 5*60, 10*60, 15*60, 30*60, 1*60*60, 2*60*60, 3*60*60, 4*60*60, 5*60*60);
  +  INTERVAL_CNT: array [0..9] of Word = (1, 5, 10, 50, 100, 500, 1000, 5000, 10000, 50000);
  +  INTERVAL_TIME: array [0..10] of Word = (30, 1*60, 5*60, 10*60, 15*60, 30*60, 1*60*60, 2*60*60, 3*60*60, 4*60*60, 5*60*60);
   
   var
     G: TKMRect;
  
positive.code: 
    procedure PaintAxisLabel(aTime: Integer; aIsPT: Boolean = False);
    var
      XPos: Integer;
    begin
      XPos := G.Left + Round((aTime - fMinTime) / (fMaxTime-fMinTime) * (G.Right - G.Left));
      TKMRenderUI.WriteShape(XPos, G.Bottom - 2, 2, 5, IfThen(aIsPT, clChartPeacetimeLn, icWhite));
      TKMRenderUI.WriteText (XPos, G.Bottom + 4, 0, TimeToString(aTime / 24 / 60 / 60), fntGame, taLeft, IfThen(aIsPT, clChartPeacetimeLbl, icWhite));
      TKMRenderUI.WriteLine(XPos, G.Top, XPos, G.Bottom, IfThen(aIsPT, clChartPeacetimeLn, clChartDashedVLn), $CCCC);
      if aIsPT then
        TKMRenderUI.WriteText(XPos - 3, G.Bottom + 4, 0, gResTexts[TX_CHART_PT_END], fntGame, taRight, clChartPeacetimeLbl);
    end;
  
    procedure RenderHorizontalAxisTicks;
    var
      I, Best: Integer;
    begin
      //Find first time interval that will have less than 10 ticks
      Best := 0;
      for I := Low(IntervalTime) to High(IntervalTime) do
        if (fMaxTime-fMinTime) div IntervalTime[I] < 7 then
        begin
          Best := IntervalTime[I];
          Break;
        end;
  
      //Paint time axis labels
      if (Best <> 0) and (fMaxTime <> fMinTime) then
        if (fPeaceTime <> 0) and InRange(fPeaceTime, fMinTime, fMaxTime) then
        begin
          //Labels before PT and PT himself
          for I := 0 to ((fPeaceTime - fMinTime) div Best) do
            PaintAxisLabel(fPeaceTime - I * Best, I = 0);
  
          //Labels after PT
          for I := 1 to ((fMaxTime - fPeaceTime) div Best) do
            PaintAxisLabel(fPeaceTime + I * Best);
        end else
          for I := Ceil(fMinTime / Best) to (fMaxTime div Best) do
            PaintAxisLabel(I * Best);
    end;
  
    function GetLineColor(aColor: Cardinal): Cardinal;
  
negative.code: 
    //Find first interval that will have less than 10 ticks
    best := 0;
    for I := Low(INTERVAL_CNT) to High(INTERVAL_CNT) do
      if topValue div INTERVAL_CNT[I] < 10 then
      begin
        best := INTERVAL_CNT[I];
        Break;
      end;
  
  