     dup first-bignum bignum= [ drop most-negative-fixnum ] [ neg ] if ;
 
 : fp-?neg ( n -- -n )
-    double>bits 63 2^ bitxor bits>double ;
+    double>bits 63 2^ bitor bits>double ;
 
 : ?neg ( n/f -- -n/f )
     [

: @first-char-no-radix ( i number-parse n char -- n/f )
    {
        { CHAR: - [ [ @neg-first-digit-no-radix ] require-next-digit ?neg ] }
        { CHAR: + [ [ @pos-first-digit-no-radix ] require-next-digit ] }
        [ @pos-first-digit-no-radix ]
    } case ; inline

PRIVATE>

: @exponent-first-char ( float-parse i number-parse n char -- float-parse n/f )
    {
        { CHAR: - [ [ @exponent-digit ] require-next-digit ?neg ] }
        { CHAR: + [ [ @exponent-digit ] require-next-digit ?pos ] }
        [ @exponent-digit ?pos ]
    } case ; inline

: ->exponent ( float-parse i number-parse n -- float-parse' n/f )
