anchor.diff:  
   (defun set-timer (fn time &optional new-thread)
     (ensure-timer-thread)
  +  (cv-wait (timer-fair-cv *timer*)
  +	   (lambda ()
  +	     (and (> (get-internal-real-time)
  +		     (+ (timer-last-time *timer*)
  +			(secs2i .0001)))
  +		  (zerop (cv-count *current-cv*)))))
     (let ((event (make-timer-event
   		:fn fn
   		:thread (unless new-thread (current-thread))
   		:time (+ (secs2i time)
   			 (get-internal-real-time)))))
  -    (qpush (timer-queue *timer*) event)
  -    (timer-notify)
  -    (interrupt-thread (timer-thread *timer*) #'%int-thrower)
  -    (sleep 0)
  -    event))
  +    (multiple-value-bind (ign node)
  +	(qpush (timer-queue *timer*) event)
  +      (declare (ignore ign))
  +      (cv-notify (timer-empty-cv *timer*))
  +      (interrupt-thread (timer-thread *timer*) #'%int-thrower)
  +      (values event node))))
   
   ;;; ----------------------------------------------------------------------------
   
   (defun remove-timer (timer)
     (ensure-timer-thread)
     (let ((node
  -	 (block search
  -	   (queue-find (timer-queue *timer*)
  -		       (lambda (x)
  -			 (when (eq x timer)
  -			   (return-from search *current-queue-node*)))))))
  +	 (if (queue-node-p timer)
  +	     timer
  +	     (block search
  +	       (queue-find (timer-queue *timer*)
  +			   (lambda (x)
  +			     (when (eq x timer)
  +			       (return-from search
  +				 *current-queue-node*))))))))
         (when node
   	(queue-delete (timer-queue *timer*) node)
   	timer)))
  
positive.code: 
  ;;; ----------------------------------------------------------------------------
  
  ;;(defmacro with-mtimeout ((time-form &rest timeout-forms) try-form)
  ;;  (
  
  ;;; ===========================================================================
  ;;; End of file
  
negative.code: 				    (let ((secs (i2secs
  						 (- (timer-event-time event)
  						    (get-internal-real-time)))))
  				      (cv-notify (timer-fair-cv *timer*))
  				      (when (plusp secs) (sleep secs))))))
  		      ;; Attempt to invoke the active timer
  		      (when (and event (maybe-invoke-event event))
  			(qpop (timer-queue *timer*))))))
  		 (t
  		  (cv-notify (timer-fair-cv *timer*))
  		  (cv-wait (timer-empty-cv *timer*)))))))))
  
  ;;; ----------------------------------------------------------------------------
  
  