public void UpdateStateUntil(DateTime finalDate) { var currentState = _careTaker.GetAssetCurrentState(); var hasMovements = UpdateMovements(currentState); var hasState = currentState._date != DateTime.MinValue; if (!hasState && !hasMovements) { return; } var currentDate = hasState ? currentState._date.AddDays(1) : _movements.First().TradeDate; while (currentDate <= finalDate) { UpdateState(currentDate); currentDate = currentDate.AddDays(1); } }