anchor.diff:  (defun ensure-timer-thread (&optional force)
     (when (or force (not *timer*))
       (setf *timer*
  -	  (make-timer :thread (make-thread #'timer-handling)
  -		      :cv-lock (make-lock)
  -		      :cv (make-condition-variable)
  -		      :cv-wait 0
  -		      :queue (make-queue :type 'priority-cqueue
  -					 :compare (lambda (x y)
  -						    (< (timer-event-time x)
  -						       (timer-event-time y))))))
  +	  (make-timer 
  +	   :cv-lock (make-lock)
  +	   :cv (make-condition-variable)
  +	   :cv-wait 0
  +	   :queue (make-queue :type 'priority-cqueue
  +			      :compare (lambda (x y)
  +					 (< (timer-event-time x)
  +					    (timer-event-time y)))))
  +	  (timer-thread *timer*) (make-thread #'timer-handling))
       ;; Wait for the new thread to initiate
       (timer-wait)
       t))
  
positive.code: 	  (cvl (timer-cv-lock tm)))
        (with-lock-held (cvl)
  	(incf (timer-cv-wait tm))
  	(condition-wait cv cvl)))))
  
  ;;; ----------------------------------------------------------------------------
  
  (defun timer-notify (&optional (tm *timer*))
    (when tm
      (let ((cv (timer-cv tm))
  	  (cvl (timer-cv-lock tm))
  	  (cvw (timer-cv-wait tm)))
        (with-lock-held (cvl)
  	(when (plusp cvw)
  	  (unwind-protect
  	       (decf (timer-cv-wait tm))
  	    (condition-notify cv)))))))
  
  ;;;
  ;;; Timer definitions
  ;;;
  (defun timer-handling ()
    (flet ((maybe-invoke-event (event)
  	   (when (< (timer-event-time event)
  		    (get-internal-real-time))
  
negative.code: ;;; ----------------------------------------------------------------------------
  
  (defun clear-timers ()
    (when (and *timer* (timer-thread *timer*)
  	     (thread-alive-p (timer-thread *timer*)))
      (destroy-thread (timer-thread *timer*)))
    (ensure-timer-thread t))
  
  