]> code.delx.au - gnu-emacs/blobdiff - lisp/timer.el
(isearch-resume-enabled): New variable.
[gnu-emacs] / lisp / timer.el
index 3820b57365e45ff3fc6d67d5f2a46b37f2ae1fae..0c159c6023dba8d7ab0639607fbc9d61bdc213e9 100644 (file)
@@ -116,9 +116,11 @@ SECS may be a fraction."
     (setq low (+ low (floor secs)))
 
     ;; Normalize
-    (setq low (+ low (/ micro 1000000)))
+    ;; `/' rounds towards zero while `mod' returns a positive number,
+    ;; so we can't rely on (= a (+ (* 100 (/ a 100)) (mod a 100))).
+    (setq low (+ low (/ micro 1000000) (if (< micro 0) -1 0)))
     (setq micro (mod micro 1000000))
-    (setq high (+ high (/ low 65536)))
+    (setq high (+ high (/ low 65536) (if (< low 0) -1 0)))
     (setq low (logand low 65535))
 
     (list high low (and (/= micro 0) micro))))