aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/timer.el6
1 files changed, 4 insertions, 2 deletions
diff --git a/lisp/timer.el b/lisp/timer.el
index 3820b57365e..0c159c6023d 100644
--- a/lisp/timer.el
+++ b/lisp/timer.el
@@ -116,9 +116,11 @@ SECS may be a fraction."
116 (setq low (+ low (floor secs))) 116 (setq low (+ low (floor secs)))
117 117
118 ;; Normalize 118 ;; Normalize
119 (setq low (+ low (/ micro 1000000))) 119 ;; `/' rounds towards zero while `mod' returns a positive number,
120 ;; so we can't rely on (= a (+ (* 100 (/ a 100)) (mod a 100))).
121 (setq low (+ low (/ micro 1000000) (if (< micro 0) -1 0)))
120 (setq micro (mod micro 1000000)) 122 (setq micro (mod micro 1000000))
121 (setq high (+ high (/ low 65536))) 123 (setq high (+ high (/ low 65536) (if (< low 0) -1 0)))
122 (setq low (logand low 65535)) 124 (setq low (logand low 65535))
123 125
124 (list high low (and (/= micro 0) micro)))) 126 (list high low (and (/= micro 0) micro))))