anchor.diff:  	  ;; Read exponent part.
   	  (loop (when (not (find (peek) +decimal-digits+))
   		  (return))
  -	     (setf exponent-value (+ (* exponent-value 10)
  +	     (setf exponent-value (+ (* exponent-value 10.0d0)
   				     (digit-char-p (consume))))))
   	;; Must be at the end.
   	(when (peek)
   	  (return-from parse-number (values :nan 0)))
   	(* sign
   	   (+ integer-part decimal-part)
  -	   (expt 10.0 (* exponent-sign exponent-value)))))))
  +	   (expt 10.0d0 (* exponent-sign exponent-value)))))))
   
   (defun -to-number (value)
     (typecase value
  
positive.code:   (-object-number value))
  
  ;;; Helper function to parse a general number...
  ;;; FIXME: Test failed...
  (defun parse-number (string)
    ;; Firstly check the first two chars, if they match 0x/0X, 0o/0O, 0b/0B,
    ;; use corresponding radix PARSE-INTEGER. Or handle decimal values.
    (declare (type string string))
    (let ((sign 1)
  	(position 0))
      (when (> 2 (length string))
        (let ((first-char (char string 0))
  	    (second-char (char string 1)))
  	(when (char= first-char #\0)
  
negative.code: 	    ;; Now works backwards and build the decimal part.
  	    (dotimes (i (- position first-decimal))
  	      (incf decimal-part (digit-char-p (char string (- position i 1))))
  	      (setf decimal-part (/ decimal-part 10.0d0)))))
  	;; And look for an exponent.
  	(when (find (peek) +exponent-indicator+)
  	  (setf exponent (consume))
  