             value[i] = DigitType(carry & 0xffff_ffff)
         }
         value[lhs.value.count] = DigitType(carry >> 32)
-        var result = BigUInt(rawValue:value)
-        result.trim()   // clean sentinel
-        return result
+        return BigUInt(rawValue:value)
     }
     public static func multiply(lhs:BigUInt, _ rhs:BigUInt)->BigUInt {
         var result = BigUInt()

            value[i] = DigitType(carry & 0xffff_ffff)
            if carry <= 0xffff_ffff { break }
        }
        var result = BigUInt(rawValue:value)
        result.trim()   // clean sentinel
        return result
    }
    /// addition never overflows
    public static func addWithOverflow(lhs:BigUInt, _ rhs:BigUInt)->(BigUInt, overflow:Bool) {

            value.removeLast()
        }
    }
    /// init from raw value -- always trimmed
    public init(rawValue:[UInt32]) {
        self.value = rawValue
        self.trim()
    }
    public subscript(i:Int)->Bit {
        get {
            let (digit, offset) = (i / 32, i % 32)
