anchor.diff:  			      ,@(if (not writer-supplied-p) `((function ,writer)))))
   	     ,@body))))))
   
  +(defun scsu-trace-output (format-control &rest format-arguments)
  +  (when *scsu-state-trace*
  +    (apply #'format *trace-output* format-control format-arguments)))
  +
   
   ;;; Decoder
   (deftype read-func-type ()
  
positive.code:        ;; (assert (or (<= #x00 byte #xDF) (<= #xF3 byte #xFF)))
         (let ((next (funcall read-func)))
  	 (declare (type (unsigned-byte 8) next))
  	 (when *scsu-state-trace*
  	   (format *trace-output* "[Unicode char ~X,~X]" byte next))
  	 (logior (ash byte 8) next))))))
  
  (defun decode-unit* (state read-func)
  
negative.code:     (declare (type (unsigned-byte 8) byte))
      (case byte
        ((#.+UC0+ #.+UC1+ #.+UC2+ #.+UC3+ #.+UC4+ #.+UC5+ #.+UC6+ #.+UC7+) ; Change to Window
         (scsu-trace-output "UC~D " (find-UCn-window byte))
         (scsu-change-to-window state (find-UCn-window byte))
         (setf (scsu-state-mode state) :single-byte-mode)
         (decode-unit* state read-func))
        ((#.+UD0+ #.+UD1+ #.+UD2+ #.+UD3+ #.+UD4+ #.+UD5+ #.+UD6+ #.+UD7+) ; Define Window
         (scsu-trace-output "UD~D " (find-UDn-window byte))
         (scsu-define-window state
  			   (find-UDn-window byte)
  			   (lookup-window-offset-table (funcall read-func)))
         (setf (scsu-state-mode state) :single-byte-mode)
         (decode-unit* state read-func))
        (#.+UQU+				; Quote Unicode
         (scsu-trace-output "UQU ")
         (let ((char (decode-quote-unicode read-func)))
  	 (prog1 char
  	   (scsu-trace-output "[quote unicode ~X]" char))))
        (#.+UDX+				; Define Extended
         (scsu-trace-output "UDX ")
         (decode-define-window-extended state read-func)
         (setf (scsu-state-mode state) :single-byte-mode)
         (decode-unit* state read-func))
  