Замерял задержку между совершением сделки на ФОРТС и приходом сделки в программу. (Время компьютера синхронизировал перед тестом.) Код ниже не работает так, как ожидается.
Код
        protected override void OnStarting()
        {
            base.Security.Exchange.IsSupportAtomicReRegister = false;
            this.SuspendRules(() =>
            {
                base.Security.WhenNewTrades().Do(NewTrade).Apply(this);
            });
            base.OnStarting();
        }
        protected void NewTrade()
        {
            String od = base.Security.LastTrade.OrderDirection.HasValue
                ? base.Security.LastTrade.OrderDirection.Value.ToString()
                : "?";
            TimeSpan lt = DateTime.Now - base.Security.LastTrade.Time;
            this.AddInfoLog("{0} сделка {1} объемом {2} направление {3}. Запаздывание {4} мс.",
                base.Security.LastTrade.Time.ToString() + "." + base.Security.LastTrade.Time.Millisecond.ToString(),
                base.Security.LastTrade.Price,
                base.Security.LastTrade.Volume,
                od,
                lt.TotalMilliseconds);
            // дальше не интересно. :)
        }
 Периодически в лог валятся записи, у которых отрицательное время задержки. То есть DateTime.Now - base.Security.LastTrade.Time меньше 0.
Я нашел Грааль, да?! То есть, посмотрел в Квик, там в окне "все сделки" время без миллисекунд, в логе время сделок тоже без миллисекунд. 
Есть ли правильный способ посчитать задержку от сделки до ее прихода в мою программу?