anchor.diff:  (defun timer-p (x)
     (typep x 'timer))
   
  +(defun timer-next-time (timer)
  +  (+ (timer-last-time timer) (timer-ms timer)))
  +
   (defun start-timer (ms repeat-p function &optional handle-function name)
     (let ((timer (make-instance 'timer
                                 :name (or name
  
positive.code:      (setf *timer-list* (delete timer *timer-list*)))))
  
  (defun update-timer ()
    (let ((promised-timers)
          (update-timers))
      (dolist (timer *timer-list*)
        (when (< (timer-ms timer)
                 (- (get-internal-real-time)
                    (timer-last-time timer)))
          (push timer update-timers)
          (cond ((and (timer-repeat-p timer)
                      (not (timer-idle-p timer)))
                 (setf (timer-last-time timer)
                       (get-internal-real-time)))
                (t
                 (unless (timer-idle-p timer)
                   (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
            (if (timer-handle-function timer)
  
negative.code: (defun shortest-wait-timers ()
    (if (null *timer-list*)
        nil
        (- (loop :for timer :in *timer-list*
                 :minimize (timer-next-time timer))
           (get-internal-real-time))))
  
  (defun exist-running-timer-p ()
    (not (null *timer-list*)))
  