anchor.diff:  
   (defstruct (semaphore
                (:constructor %make-semaphore))
  +  "This struct represents the standard semaphore synchronization
  +primitive."
     (count 0)
     (lock (make-lock))
     (cv (make-condition-variable)))
   
   (defun make-semaphore ()
  +  "Create a new semaphore."
     (%make-semaphore))
   
   (defun semaphore-signal (semaphore)
  +  "Increment the given semaphore and allow a thread blocked in
  +`semaphore-wait' to continue."
     (with-accessors ((count semaphore-count)
                      (lock semaphore-lock) (cv semaphore-cv))
         semaphore
  
positive.code: 
  (defstruct (queue
               (:constructor %make-queue))
    front
    back
    (lock (make-lock))
    (cv (make-condition-variable)))
  
  (defun make-queue ()
    (%make-queue))
  
  (defun enqueue (item queue)
    (with-accessors ((front queue-front) (back queue-back)
                     (lock queue-lock) (cv queue-cv)) queue
      (with-lock-held (lock)
        (cond
          ((null front)
  
negative.code:       nil)))
  
  (defun %dequeue (queue &key (wait t))
    "The brains of `dequeue' and `dequeue-no-block'."
    (with-accessors
          ((front queue-front) (back queue-back)
           (lock queue-lock) (cv queue-cv))
        queue
      (with-lock-held (lock)
        (when (and (not wait) (null front))
          (return-from %dequeue (values nil nil)))
  