anchor.diff:  					    (t :normal))))
     (unless (numberp object)
       (error "~A is not an expected type for jp-numeral" (type-of object)))
  -  (unless (= *print-base* 10)
  -    (error "*print-base* must be 10 for jp-numeral"))
  -  (prog ((buf (make-array '(1) :element-type 'character :fill-pointer 0 :adjustable t)))
  +  (prog ((*print-base* 10) ; *print-base* must be 10 for jp-numeral
  +	 (buf (make-array '(1) :element-type 'character :fill-pointer 0 :adjustable t)))
      try-again
      (handler-case
          (with-output-to-string (buf-stream buf)
  -	 (when (minusp object)
  -	   (write-string (get-minus-sign style) buf-stream))
  -	 (ctypecase object
  -	   (integer
  -	    (print-jp-integer buf-stream (abs object) style))
  -	   (ratio
  -	    (case style
  -	      (:positional
  -	       (print-jp-integer buf-stream (abs (numerator object)) style)
  -	       (write-string (get-parts-of style) buf-stream)
  -	       (print-jp-integer buf-stream (denominator object) style))
  -	      (t
  +	 (case style
  +	   (:positional
  +	    (print-positional stream object style digits-after-dot scale))
  +	   (otherwise
  +	    (when (minusp object)
  +	      (write-string (get-minus-sign style) buf-stream))
  +	    (ctypecase object
  +	      (integer
  +	       (print-jp-integer buf-stream (abs object) style))
  +	      (ratio
   	       (print-jp-integer buf-stream (denominator object) style)
   	       (write-string (get-parts-of style) buf-stream)
  -	       (print-jp-integer buf-stream (abs (numerator object)) style))))
  -	   (float
  -	    (let ((int-part
  -		   (handler-case (truncate object)
  -		     (error ()
  -		       (error 'bad-format-float-error)))))
  -	      (print-jp-integer buf-stream (abs int-part) style))
  -	    (when (plusp (length buf))
  -	      (write-char (or decimal-mark (get-radix-point-char style))
  -			  buf-stream))
  -	    (print-fractional-part buf-stream object style digits-after-dot scale)))
  -	 (unless (plusp (length buf))
  -	   (write-string (get-digit 0 style) buf-stream)))
  +	       (print-jp-integer buf-stream (abs (numerator object)) style))
  +	      (float
  +	       (print-fractional buf-stream object style digits-after-dot scale)))
  +	    (unless (plusp (length buf))
  +	      (write-string (get-digit 0 style) buf-stream)))))
        (no-power-char-error ()
          ;; Decimal chars are exhausted. Use positional.
          (assert (not (eq style :positional)))
  
positive.code: 
  ;;; Writers
  
  (defun translate-char (char style)
    (ecase char
      (#\0 (get-digit 0 style))
      (#\1 (get-digit 1 style))
      (#\2 (get-digit 2 style))
      (#\3 (get-digit 3 style))
      (#\4 (get-digit 4 style))
      (#\5 (get-digit 5 style))
      (#\6 (get-digit 6 style))
      (#\7 (get-digit 7 style))
      (#\8 (get-digit 8 style))
      (#\9 (get-digit 9 style))))
  
  
  (defun make-digits4-string (digits4 style)
  
negative.code: 
  (defun print-jp-integer (stream object style)
    (declare (type (integer 0) object))
    (loop with strs = nil
       for power from 0 by 4
       for (rest digits4) = (multiple-value-list (floor object 10000))
       then (multiple-value-list (floor rest 10000))
       as digits4-str = (make-digits4-string digits4 style)
       as power-str = (if (plusp power)
  			(get-power power style) nil)
       when (plusp (length digits4-str))
       do (when power-str
  	  (push power-str strs))
       and do (push digits4-str strs)
       while (> rest 0)
       finally (mapc #'(lambda (s) (write-string s stream)) strs)))
  
  
  (defun print-fraction (stream object style digits-after-dot scale)
    (declare (type float object))
    (let* ((ratio (if digits-after-dot
  		    (rational object)
  		    (rationalize object)))
  	 ;; -- support 100000000000000.1d0
  	 (fp-error (multiple-value-bind (_scaled expon _sign)
  		       (integer-decode-float object)
  		     (declare (ignore _scaled _sign))
  