gnucash maint: Bug 798547 - Calculated Due Date is short 1 day when posting on...

John Ralls jralls at
Thu Jun 2 18:51:10 EDT 2022

Updated	 via (commit)
	from (commit)

commit 903cbdcad34e6a73041442ec1bcd90103572cdd9
Author: John Ralls <jralls at>
Date:   Thu Jun 2 15:46:59 2022 -0700

    Bug 798547 - Calculated Due Date is short 1 day when posting on...
    day of fall change from Daylight Time to Standard Time.
    Really any day where the period crosses the dst->std change, and
    since the date dialog returns local midnight for the time that includes
    the day of the change.
    Convert both the parameter time and the return time to neutral time
    to ensure that the interval is handled correctly.

diff --git a/libgnucash/engine/gncBillTerm.c b/libgnucash/engine/gncBillTerm.c
index fb6f2bb15..3338b1433 100644
--- a/libgnucash/engine/gncBillTerm.c
+++ b/libgnucash/engine/gncBillTerm.c
@@ -800,20 +800,21 @@ compute_monthyear (const GncBillTerm *term, time64 post_date,
 static time64
 compute_time (const GncBillTerm *term, time64 post_date, int days)
-    time64 res = post_date;
+    time64 res = gnc_time64_get_day_neutral (post_date);
     int day, month, year;
     switch (term->type)
         res += (SECS_PER_DAY * days);
+        res = gnc_time64_get_day_neutral (res);
         compute_monthyear (term, post_date, &month, &year);
         day = gnc_date_get_last_mday (month - 1, year);
         if (days < day)
             day = days;
-        res = gnc_dmy2time64 (day, month, year);
+        res = gnc_dmy2time64_neutral (day, month, year);
     return res;

Summary of changes:
 libgnucash/engine/gncBillTerm.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

More information about the gnucash-changes mailing list