anchor.diff:  ;;;
   ;;; The number of multiple values to return is specified to simplify
   ;;; implementation and potentially avoid a lot of consing.
  +;;;
  +;;; See also MUTLIPLE-VALUE-MAPCAR*.
   (defun multiple-value-mapcar (n func &rest lists)
     "Map FUNC across LISTS, accumulating the first N values returned by each
   invocation of FUNC into N lists based on position."
  
positive.code:      do (loop
             for acc-cell on accumulator
             for res-cell = results then (cdr res-cell) ;; Don't stop looping at
             ;; the end of results
             do (push (car res-cell) (car acc-cell)))
       finally (return (apply #'values (mapcar #'nreverse accumulator)))))
  
  
negative.code:   (loop
       for list in lists
       when (not list)
         do (return (list nil nil))
       collecting (car list) into cars
       collecting (cdr list) into cdrs
       finally (return (list cars cdrs))))
  