From 7346b0ced8059a9f4a546b56f636afc5eee126e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Tue, 24 Mar 2020 22:51:18 +0100 Subject: Change overflow type for time-. --- module/datetime.scm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'module/datetime.scm') diff --git a/module/datetime.scm b/module/datetime.scm index 01bbdfa1..1dd2f9bd 100644 --- a/module/datetime.scm +++ b/module/datetime.scm @@ -495,6 +495,9 @@ base rest))) (values time sum)))) +;; hour is number of days we overflow (negative) +;; (time- #03:00:00 #07:00:00) ; => 20:00:00 => 1 +;; time, Δtime → time, hour (define (time-% base change) (define-values (second-fixed change*) @@ -521,8 +524,10 @@ (if (>= (hour minute-fixed) (hour change)) (values (set (hour minute-fixed) = (- (hour change))) 0) - (values (set (hour minute-fixed) 0) - (- (hour change) (hour minute-fixed))))) + ;; TODO overflow more than one day + (let ((diff (- (hour change) (hour minute-fixed)))) + (values (set (hour minute-fixed) (- 24 diff)) + 1)))) (define-public (time- base . rest) (let ((sum 0)) -- cgit v1.2.3