anchor.diff:  		 (new (%insert (min-node-of queue) new-node)))
   	    (when (funcall (queue-comparison queue)
   			   element (node-value min))
  -	      (setf (min-node-of queue) new)))
  -	  (setf (min-node-of queue)
  -		(let ((node (get-node rnode)))
  -		  (setf (node-left node) node
  -			(node-right node) node))))))
  -  element)
  -  
  +	      (setf (min-node-of queue) new))
  +	    (values element new-node))
  +	  (values element
  +		  (setf (min-node-of queue)
  +			(let ((node (get-node rnode)))
  +			  (setf (node-left node) node
  +				(node-right node) node)
  +			  node)))))))
   
   ;;; ---------------------------------------------------------------------------
   
  
positive.code: ;;; ---------------------------------------------------------------------------
  
  (defun queue-consolidate (queue)
    (let ((unique (make-array (ceiling (log (queue-size queue) 1.618))
                              :initial-element nil)))
      (map-siblings
       (lambda (node &aux (degree (node-degree node)))
         (unless (node-parent node)
           (loop while (aref unique degree) do
                (let ((other (aref unique degree)))
  
negative.code: ;;; ---------------------------------------------------------------------------
  
  (defun %queue-push (queue element rnode)
    (let ((min (min-node-of queue)))
      (incf (queue-size queue))
      (flet ((get-node (node)
  	     (cond ((queue-node-p node)
  		    (setf (node-value node) element
  			  (node-degree node) 0)
  		    node)
  		   (t (make-node :value element
  				 :degree 0)))))
        (if min
  