anchor.diff:                 (parse-delay every)
                  (if until (parse-delay until) -1)))))))
   
  -(defun timer-timeout (type delay function)
  +(defun timer-timeout (type delay handler arguments)
     (flet ((inner (time-target)
              (v:trace :timer "Timing ~a seconds" (- time-target (get-universal-time)))
              (loop while (< (get-universal-time) time-target)
  
positive.code:   ""
    (let ((handler (time-handler identifier)))
      (when handler
        (unless (= 0 (length (active-timers handler)))
          (v:warn :timer "Stopping ~d active timers of ~a due to removal." (length (active-timers handler)) identifier)
          (loop for thread in (active-timers handler)
                do (destroy-thread thread)))
        (remhash identifier *timer-map*))))
  
  (defun set-timer-function (identifier handler-function &key (type :multiple) (arguments () a-p) docstring)
    ""
    (assert (symbolp identifier) () "IDENTIFIER has to be a symbol.")
    (when (time-handler identifier)
      (v:debug :timer "Redefining handler ~a" identifier)
      (when (active-timers (time-handler identifier))
        (v:warn :timer "Redefining running timer ~a" identifier)))
    (unless a-p
      (setf arguments (cdr (function-arguments handler-function))))
    (setf (time-handler identifier)
          (make-instance 'time-handler 
                         :identifier identifier :handler-function handler-function
                         :timer-type type :docstring docstring)))
  
  (defgeneric apropos-time-handler (handler)
  
negative.code:       (case (timer-type handler)
          (:multiple (setf if-exists :add))
          (:single (setf if-exists :error))))
      (when (schedulings handler)
        (with-simple-restart (add-scheduling "Add a scheduling anyway.")
          (case if-exists
            (:add)
            (:error (error "A scheduling is already running on this timer!"))
            (T (return-from schedule-timer NIL)))))
      (v:debug :timer "Scheduling timer ~a with ~a ~a" timer type delay)
      (launch-timer handler type delay arguments))
    T)
  