 
         //get index of case <= magnitude...
         // clamp to upper/lower bounds for values outside range
-        var index: Int? = allMagnitudes().lastIndex(where: {$0 <= mag})
+        var index: Int? = powers().lastIndex(where: {$0 <= mag})
         if index == nil {
             index = units.magnitude < 1.0 ? 0 : (allCases.count - 1)
         }

    case exa   = 1.0e18
    case zeta  = 1.0e21
    case yota  = 1.0e24
}

///Enum of IEC and IEEE 1541 prefixes for binary (base 2) orders of magnitude
enum BinaryMagnitude: Double {
    case uni  = 0x01p0
    case kibi = 0x01p10
    case mebi = 0x01p20


    static func magnitude(_ units: Double) -> T
    static func toNearestMagnitude(_ units: Double) -> (Double, T)
}

extension DecimalMagnitude: MagnitudeConversion {
    ///Convert value to associated order of magnitude.
    ///
    ///  Examples:
