protected double BucketEntry(TEntry entry, TracktorReport report) { DateTime localStart = ToLocal(entry.StartDate).Value; DateTime localEnd = ToLocal(entry.EndDate.HasValue ? entry.EndDate : DateTime.UtcNow).Value; DateTime firstDay = localStart.Date; DateTime lastDay = localEnd.Date; DateTime currentDay = firstDay; double totalContrib = 0; while (currentDay <= lastDay) { DateTime nextDay = currentDay.AddDays(1); DateTime periodStart = currentDay > localStart ? currentDay : localStart; DateTime periodEnd = nextDay > localEnd ? localEnd : nextDay; var periodContrib = (periodEnd - periodStart).TotalSeconds; report.AddContrib(currentDay, entry.TTaskID, periodContrib); currentDay = nextDay; totalContrib += periodContrib; } return(totalContrib); }