anchor.diff:      (js-number val)
       (string (cond ((string= val "Infinity") (infinity))
                     ((string= val "-Infinity") (-infinity))
  -                  (t (or (read-js-number val) (nan)))))
  +                  (t (or (with-input-from-string (in val) (read-js-number in)) (nan)))))
       (boolean (if val 1 0))
       (symbol (ecase val (:undefined (nan)) (:null 0)))
       (obj (to-number (default-value val :number)))))
  
positive.code:   (let ((val (to-string val)))
      (cond ((string= val "Infinity") (infinity))
            ((string= val "-Infinity") (-infinity))
            (t (or (read-js-number val) (nan))))))
  (stdfunc "isNaN" (val)
    (is-nan (to-number val)))
  (stdfunc "eval" (str)
  
negative.code:                      ((eq val (infinity)) most-positive-fixnum)
                       ((eq val (-infinity)) most-negative-fixnum)
                       (t (truncate val))))
      (string (let ((read (with-input-from-string (in val) (read-js-number in))))
                (etypecase read (null 0) (integer read) (number (floor read)))))
      (boolean (if val 1 0))
      (symbol 0)
  