anchor.diff:            timer-p
             timer-ms
             start-timer
  +          start-idle-timer
             stop-timer
             alive-timer-p))
   
   (defvar *timer-list* nil)
  -(defvar *idle-timer-list* nil)
   
   (defclass timer ()
     ((ms
  
positive.code:                               :last-time (get-internal-real-time)
                                :function function
                                :args args
                                :handle-function handle-function)))
      (push timer *timer-list*)
      timer))
  
  (defun stop-timer (timer)
    (setq *timer-list* (delete timer *timer-list*)))
  
  (defun update-timer ()
  
negative.code:                (- (get-internal-real-time)
                    (timer-last-time timer)))
          (push timer update-timers)
          (cond ((timer-repeat-p timer)
                 (setf (timer-last-time timer)
                       (get-internal-real-time)))
                (t
                 (setf (timer-alive-p timer) nil)
                 (push timer promised-timers)))))
      (setq *timer-list* (set-difference *timer-list* promised-timers))
      (dolist (timer update-timers)
        (handler-case
  