             switch (idx, codeunit, state) {
 
             case (_, Token.Minus, .initial):
-                numberStorage.append(codeunit)
+                sign = -1
                 state = .leadingNegativeSign
             
             case (_, Token.Plus, .initial):


            case (_, Token.One...Token.Nine, .leadingNegativeSign): fallthrough
            case (_, Token.One...Token.Nine, .initial):
                numberStorage.append(codeunit)
                state = .integer

            case (_, Token.Zero...Token.Nine, .decimal):
                numberStorage.append(codeunit)
                state = .fractional

            case (_, Token.Zero...Token.Nine, .integer): fallthrough
            case (_, Token.Zero...Token.Nine, .fractional):
                numberStorage.append(codeunit)

            case (_, Token.e, .leadingZero): fallthrough
            case (_, Token.E, .leadingZero): fallthrough

                throw JsonParserError(code: ErrorCode.ParsingError.code, domain: JSValueErrorDomain, userInfo: info)

            case (_, Token.Zero, .initial):
                state = .leadingZero

            case (_, Token.Zero, .leadingNegativeSign):
                state = .leadingZero

            case (_, Token.Zero...Token.Nine, .leadingZero):
