public IEnumerable <DateRange> SplitByHalfHour() { if (Start.EndOfHalfHour() == Stop.EndOfHalfHour()) { return new[] { this } } ; var t = Start.EndOfHalfHour().AddTicks(1); return(new[] { new DateRange(Start, t) }.Concat(new DateRange(t, Stop).SplitByHalfHour())); }