 
         var returnResult: Float = 0
 
-        if mantissa >= kFirstFloatResrvedValue && mantissa <= Int32(DecoderFloatValues.negativeInfinity.rawValue) {
-            returnResult = Float(kReservedFloatValues[mantissa - kFirstFloatResrvedValue])
+        if mantissa >= Int32(DecoderFloatValues.positiveInfinity.rawValue) && mantissa <= Int32(DecoderFloatValues.negativeInfinity.rawValue) {
+            returnResult = Float(kReservedFloatValues[mantissa - Int32(DecoderFloatValues.positiveInfinity.rawValue)])
         } else {
 
             if mantissa >= 0x800000 {
                 mantissa = -((0xFFFFFF + 1) - mantissa)
             }
-
+            
             let magnitude = pow(10.0, Double(exponent))
             returnResult = Float(mantissa) * Float(magnitude)
-
-        }
-
+            
+        }
+        
         return returnResult
     }
-
-    
-}
-
+}

}


//MARK: - Other Decodes 
public extension DataDecoder {

    /// Decodes IP Address from the data stream

    fileprivate var decode: Data
    fileprivate var index: Int = 0

    fileprivate lazy var kReservedFloatValues: [Double] = {
        return [Double.infinity, Double.nan, Double.nan, Double.nan, -Double.infinity]
    }()

    public init(_ value: Data, startIndex: Int = 0) {
        self.index = startIndex
        self.decode = value
    }

    /// Decodes Raw data from data Stream
    ///
    /// - Parameter length: Length of Data to pull out of stream
    /// - Returns: Data Instance
    public mutating func decodeData(length: Int) -> Data {
        var value: [UInt8] = [UInt8]()
        for _ in index..<(index + length) {
            value.append(decode.scanValue(index: &index, type: UInt8.self) ?? 0)
        }

        return Data(value)
    }

    /// Decodes Nibble from the data stream
