anchor.diff:  ;;; Writers
   
   (defun print-positional (stream object style digits-after-dot scale radix-point-str)
  -  (let* ((trim-zero? (and (floatp object)
  -			  (not digits-after-dot)))
  -	 (digits-after-dot (or digits-after-dot
  -			       (- +power-min+)))
  -	 (lispstr
  -	  (ctypecase object
  -	    (integer (format nil "~D" object))
  -	    (ratio (format nil "~D/~D" (numerator object) (denominator object)))
  -	    (float (format nil "~,v,vF" digits-after-dot scale object))
  -	    ;; FIXME: trim-zero doesn't work for complex.
  -	    (complex (format nil "~,v,vF~,v,v@Fi" digits-after-dot scale (realpart object)
  -			     digits-after-dot scale (imagpart object))))))
  -    (when trim-zero?
  -      (setf lispstr (string-right-trim '(#\0) lispstr)))
  -    (loop for c across lispstr
  -       as jp-str = 
  -       (case c
  -	 (#\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))
  -	 (#\. radix-point-str)
  -	 (#\- (get-minus-sign style))
  -	 (#\/ (get-parts-of style))
  -	 ((#\d #\e #\f #\l #\s)
  -	  (assert nil (c)
  -		  "Exponent marker '~C' is found. This is an internal BUG of jp-numeral." c))
  -	 ;; for complex
  -	 ((#\+ #\i)
  -	  (if (complexp object)
  -	      (string c)
  -	      (error 'bad-format-float-error)))
  -	 (otherwise
  -	  (error 'bad-format-float-error)))
  -       do (write-string jp-str stream))))
  +  (loop with lispstr
  +       = (typecase object
  +	   (integer (format nil "~D" object))
  +	   (ratio (format nil "~D/~D" (numerator object) (denominator object)))
  +	   (float (format nil "~,v,vF" digits-after-dot scale object))
  +	   (t (error 'not-formattable-error)))
  +     for c across lispstr
  +     as jp-str = 
  +     (case c
  +       (#\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))
  +       (#\. radix-point-str)
  +       (#\- (get-minus-sign style))
  +       (#\/ (get-parts-of style))
  +       (otherwise
  +	(error 'not-formattable-error)))
  +     do (write-string jp-str stream)))
   
   
   (defun make-digits4-string (digits4 style)
  
positive.code: 
  
  (defun print-fraction (stream object style digits-after-dot scale radix-point-str)
    (declare (type float object))
    (handler-bind ((error #'(lambda (c)
  			    (error 'bad-format-float-error :original-condition c))))
      (let* ((ratio (if digits-after-dot
  		      (rational object)
  		      (rationalize object)))
  
negative.code: 		(put-n (get-digit d0 style))))))))))
  
  (defun print-jp-integer (stream object style)
    (declare (type integer object))
    (when (minusp object)
      (write-string (get-minus-sign style) stream)
      (setf object (- object)))
    (loop with strs = nil
       for power from 0 by 4
       for (rest digits4) = (multiple-value-list (floor object 10000))
  