     }
 }
 
-public struct FixRat<I:FixedRationalElement> : FixedRationalType {
+public struct FixedWidthRational<I:FixedWidthRationalElement> : FixedWidthRationalType {
     public typealias IntegerLiteralType = Int
     public typealias Element = I
     public var (num, den):(I, I)

    }
}

public typealias IntRat = FixRat<Int>

extension FixRat : Codable where Element: Codable {
    public enum CodingKeys : String, CodingKey {
        public typealias RawValue = String
        case num, den

    }
}

public protocol FixedWidthRationalElement : RationalElement & FixedWidthInteger {}

extension Int:      FixedWidthRationalElement {}
extension Int8:     FixedWidthRationalElement {}
extension Int16:    FixedWidthRationalElement {}
extension Int32:    FixedWidthRationalElement {}
extension Int64:    FixedWidthRationalElement {}


extension FixedWidthRationalElement {
    public func over(_ den:Self)->FixedWidthRational<Self> {
        return FixedWidthRational(self, den)
    }
}

public protocol FixedWidthRationalType : RationalType where Element: FixedWidthRationalElement { }

extension FixedWidthRationalType {
    public static var max:Self {
        return Self(+Element.max, 1)
    }
