         }
     }
     
-    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 {

        //      - continue to the frac part right away
        // - if it's 1...9, continue to parsing integer part first
        let integer: Int
        let frac: Int
        if reader.curr() == Const.Zero {
            try reader.nextAndCheckNotDone()
            

        var dbl = Double(int)
        
        //if it's a frac, append the fraction section
        if !frac.isEmpty {
            //double
            let fracAdd = Double("0.\(frac)")! * Double(sign)
            dbl += fracAdd
