public static DateTime GoTo(this DateTime dt, Func<DateTime, bool> stopCondFunc, Func<DateTime, DateTime> stepFunc) { while(!stopCondFunc(dt)) dt = stepFunc(dt); return dt; }