         }
     }
     
-    private func parseFrac<R: Reader>(_ reader: R) throws -> Int {
+    private func parseFrac<R: Reader>(_ reader: R) throws -> String {
         
         //frac part MUST start with decimal point!
         guard reader.curr() == Const.DecimalPoint else {

        return value
    }
    
    private func generateNumber(negative: Bool, integer: Int, frac: Int, exp: Int?) -> JSON.Number {
        
        //form the int section
        var int = integer

        int *= sign
        
        //if that's it, let's call it an integer
        if frac.isEmpty && exp == nil {
            if negative {
                //if it's negative, make it a signed integer
                return .integer(int)
