anchor.diff:                               (ecase direction
                                  (:horizontal width)
                                  (:vertical height))))
  -    #+nil ; WITH-OUTPUT-TO-OUTPUT-RECORD not yet defined as a macro
       (function (let ((record (with-output-to-output-record (stream)
                                 (funcall specification))))
                   (ecase direction
  
positive.code: 
  ;;;; ----------------------------------------------------------------------
  
  (defun parse-space (stream specification direction)
    "Returns the amount of space given by SPECIFICATION relating to the
  STREAM in the direction DIRECTION."
    ;; This implementation lives unter the assumption that an
    ;; extended-output stream is also a sheet and has a graft.
    ;; --GB 2002-08-14
    (etypecase specification
  
negative.code:          specification
         (ecase unit
           (:character
            (ecase direction
              (:horizontal (* value (stream-character-width stream #\M)))
              (:vertical   (* value (stream-line-height stream)))))
           (:line
            (ecase direction
              (:horizontal (* value (stream-line-width stream)))
              (:vertical   (* value (stream-line-height stream)))))
           ((:point :pixel :mm)
            (let* ((graft (graft stream))
                   (gunit (graft-units graft)))
              ;; mungle specification into what grafts talk about
              (case unit
                ((:point) (setf value (/ value 72) unit :inches))
                ((:pixel) (setf unit :device))
                ((:mm)    (setf unit :millimeters)))
              ;;
              (multiple-value-bind (dx dy)
                  (multiple-value-call
  