diff --git a/lib/modules/Calendar.pmod/YMD.pike b/lib/modules/Calendar.pmod/YMD.pike index bf4d93e6f01e0bbc3c5c807d3c2f8cdb10a2a46a..560fe060550d6d567187b3b724ca0c1f7915633e 100644 --- a/lib/modules/Calendar.pmod/YMD.pike +++ b/lib/modules/Calendar.pmod/YMD.pike @@ -2486,8 +2486,17 @@ static TimeRange dwim_tod(TimeRange origin,string whut,int h,int m,int s) TimeRange tr; if (catch { tr=origin[whut](h,m,s); - } && h==24 && m==0 && s==0) // special case - return origin->end()->second(); + }) { + if (h==24 && m==0 && s==0) // special case + return origin->end()->second(); + else { + object d=origin->day(); + array(cHour) ha=origin->hours(); + int n=search(ha->hour_no(),h); + if (n!=-1) tr=ha[n]->minute(m)->second(s); + else return 0; // no such hour + } + } if (tr->hour_no()!=h || tr->minute_no()!=m) {