anchor.diff:    (funcall write-func (ldb (byte 8 8) code-point))
     (funcall write-func (ldb (byte 8 0) code-point)))
   
  -(defun encode-unit*/single-byte-mode (state code-point write-func)
  -  (declare (type unicode-code-point code-point)
  +(defun encode-unit*/single-byte-mode (state code-point next-code-point write-func)
  +  (declare (type unicode-code-point code-point next-code-point)
   	   (type write-func-type write-func))
     (cond ((< code-point #x20)		
   	 (case code-point
  
positive.code: 	 (funcall write-func code-point))
  	((<= code-point #x7F)		; Basic Latin
  	 (funcall write-func code-point))
  	((in-window-p (scsu-state-active-window-offset state) code-point) ; in current dynamic window
  	 (let ((offset (scsu-state-active-window-offset state)))
  	   (declare (type unicode-code-point offset))
  	   (funcall write-func (+ (- code-point offset) #x80))))
  
negative.code:   (with-buffer-accessor (:writer put-byte :current dst-current)
        (bytes start2 end2 :element-type (unsigned-byte 8))
      (loop for i of-type fixnum from start1 below end1
         for next of-type fixnum from (1+ start1)
         as code-point = (char-code (char string i)) then next-code-point
         as next-code-point = (if (>= next end1) nil (char-code (char string next)))
         do (with-scsu-error-handling
  	      (state :src i :dst dst-current
  		     :return (lambda (dst src)
  			       (return-from encode-from-string
  				 (values bytes dst src state))))
  	    (encode-unit* state code-point next-code-point #'put-byte)))
      (values bytes dst-current end1 state)))
  
  ;; The required length is out of BMP case.
  