anchor.diff:        (handle-logical-block start end)
         (handle-standard-< start end)))
   
  +;; TODO.
   (defun handle-standard-< (start end)
  -  (let ((n (num-args-in-directive start end)))
  -    `(using-format xp ,(subseq *string* (1- start) end)
  -                   ,@ (copy-tree (make-list n :initial-element (get-arg))))))
  +  (num-args-in-directive start end)
  +  (compile-format (1+ (params-end start)) (directive-start end)))
   
   (defun num-args-in-directive (start end)
     (let ((n 0) c i j)
  
positive.code:         (T (if (eq stream T) (setf stream *standard-output*))
             (when (stringp string-or-fn)
               (setf string-or-fn (process-format-string string-or-fn nil)))
             (cond ((not (stringp string-or-fn))
                    (apply string-or-fn stream args))
                   ((xp-structure-p stream)
                    (apply #'using-format stream string-or-fn args))
                   (T (apply #'cl:format stream string-or-fn args)))
             nil)))
  
  (defvar *format-string-cache* (make-hash-table :test #'equal))
  
  (defun process-format-string (string-or-fn force-fn?)
    (cond ((not (stringp string-or-fn)) string-or-fn) ;called from ~? too.
          (T (let ((value (gethash string-or-fn *format-string-cache*)))
               (when (or (not value) (and force-fn? (stringp value)))
                 (setf value (maybe-compile-format-string string-or-fn force-fn?))
                 (setf (gethash string-or-fn *format-string-cache*) value))
               value))))
  
negative.code: ;called is the internal routine that FORMAT uses to do the corresponding
  ;work.  However, this cannot be done in a portable way.
  
  (defun impl-integer (start end base)
    (declare (ignore end))
    (multiple-value-bind (colon atsign params)
        (parse-params start '(nil #\Space #\, 3))
      `(sys.format::format-integer ,(get-arg) ,base ',params ',atsign ',colon)))
  
  (def-format-handler #\D (start end) (impl-integer start end 10))
  (def-format-handler #\B (start end) (impl-integer start end 2))
  (def-format-handler #\O (start end) (impl-integer start end 8))
  (def-format-handler #\X (start end) (impl-integer start end 16))
  
  (def-format-handler #\R (start end)
    (declare (ignore end))
    (multiple-value-bind (colon atsign params)
        (parse-params start '(10 nil #\Space #\, 3))
      `(sys.format::format-radix ,(get-arg) ',params ',atsign ',colon)))
  
  (def-format-handler #\C (start end)
    (declare (ignore end))
    (multiple-value-bind (colon atsign)
        (parse-params start '())
      `(sys.format::format-character ,(get-arg) ',atsign ',colon)))
  
  ;; TODO.
  (def-format-handler #\F (start end) (impl-integer start end 10))
  (def-format-handler #\E (start end) (impl-integer start end 10))
  (def-format-handler #\G (start end) (impl-integer start end 10))
  (def-format-handler #\$ (start end) (impl-integer start end 10))
  
  ;Format directives that get open coded "P%&~|T*?^"
  
  