anchor.diff:  (define-condition no-power-char-error (error)
     ())
   
  -(define-condition bad-format-float-error (error)
  +(define-condition not-formattable-error (error)
     ((original-condition :initarg :original-condition :initform nil)))
   
   
  
positive.code: 	   (otherwise
  	    (typecase object
  	      (integer
  	       (when (minusp object)	; TODO: cleanup
  		 (write-string (get-minus-sign style) buf-stream))
  	       (print-jp-integer buf-stream (abs (* object (expt 10 scale))) style)
  	       (when radix-point-char
  		 (write-string radix-point-str buf-stream)))
  	      (ratio
  	       (when (minusp object)	; TODO: cleanup
  		 (write-string (get-minus-sign style) buf-stream))
  	       (let ((object (* object (expt 10 scale))))
  		 (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
  	       (when (minusp object)	; TODO: cleanup
  		 (write-string (get-minus-sign style) buf-stream))
  	       (print-fraction buf-stream (abs object) style digits-after-dot scale radix-point-str))
  	      (t			; complex etc.
  	       ;; TODO: merge this code with no-power-char-error
  	       (assert (not (eq style :positional)))
  	       (setf style :positional)
  	       (setf (fill-pointer buf) 0)
  	       (go try-again)))
  	    (unless (plusp (length buf))
  	      (write-string (get-digit 0 style) buf-stream)))))
       (no-power-char-error ()
  
negative.code:        (setf style :positional)
         (setf (fill-pointer buf) 0)
         (go try-again))
       (not-formattable-error ()
         (setf style nil)
         (setf (fill-pointer buf) 0)
         (format buf "~A" object)))
  