         }
     }
 
-    /// Returns self reduced to 0..<24 range
+    /// Returns a Hour whose value is reduced to the 0..<24 range.
     public var reduced: Hour { return Hour(value.positiveTruncatingRemainder(dividingBy: 24.0)) }
-    /// Returns self reduced to -12..<12 range (around 0)
+    
+    /// Returns a Hour whose value is reduced to the -12..<12 range (that is, around 0, hence the name).
     public var reduced0: Hour { return Hour(value.positiveTruncatingRemainder(dividingBy: 24.0)-12.0) }
     
+    /// A standard sexagesimal description of the Hour value.
     public var description: String {
         let (sign, hrs, min, sec) = self.sexagesimalNotation
         return sign.string + String(format: "%ih%im%06.3fs", hrs, min, sec)

        self.init(Double(sign) * (absHour + absMinutes + absSeconds))
    }
    
    public var inDays: Day { return Day(value / 24.0) }
    public var inMinutes: Minute { return Minute(value * 60.0) }
    public var inSeconds: Second { return Second(value * 3600.0) }
    public var inDegrees: Degree { return Degree(value * 15.0) }
    public var inJulianDays: JulianDay { return JulianDay(value / 24.0) }
    
    public var sexagesimalNotation: SexagesimalNotation {
        get {
            let hrs = abs(value.rounded(.towardZero))


// MARK: -

/// The Minute is physical number representing an Earth minute.
/// Minute structs conform to SwiftAA Numeric type protocol.
public struct Minute: NumericType, CustomStringConvertible {
    
    /// The Minute value
    public let value: Double
    
    /// Returns a Minute struct initialized to contain the given value.
    ///
    /// - Parameter value: The value for the new Minute.
    public init(_ value: Double) {
        self.value = value
    }
    
    /// Transform the current Minute value into Days.
    public var inDays: Day { return Day(value / (24.0 * 60.0)) }
    /// Transform the current Minute value into Hours.
    public var inHours: Hour { return Hour(value / 60.0) }
    /// Transform the current Minute value into Seconds.
    public var inSeconds: Second { return Second(value * 60.0) }
    /// Transform the current Minute value into Degrees.
    public var inDegrees: Degree { return Degree(value / 60.0 * 15.0) }
    /// Transform the current Minute value into Julian Days (convenient for easily making operations with Julian Day fractions).
    public var inJulianDays: JulianDay { return JulianDay(value / 1440.0) }
    
    /// Returns a Minute whose value is reduced to the 0..<60 range.
    public var reduced: Minute { return Minute(value.positiveTruncatingRemainder(dividingBy: 60.0)) }
    
    /// The standard description of the Hour
    public var description: String { return String(format: "%.2f min", value) }
}

// MARK: -

/// The Second is physical number representing an Earth second.
/// Second structs conform to SwiftAA Numeric type protocol.
public struct Second: NumericType, CustomStringConvertible {
    
    /// The Second value
    public let value: Double
    
    /// Returns a Second struct initialized to contain the given value.
    ///
    /// - Parameter value: The value for the new Second.
    public init(_ value: Double) {
        self.value = value
    }
    
    /// Transform the current Second value into Days.
    public var inDays: Day { return Day(value / (24.0 * 3600.0)) }
    /// Transform the current Second value into Hour.
    public var inHours: Hour { return Hour(value / 3600.0) }
    /// Transform the current Second value into Minute.
    public var inMinutes: Minute { return Minute(value / 60.0) }
    /// Transform the current Second value into Degrees.
    public var inDegrees: Degree { return Degree(value / 3600.0 * 15.0) }
    /// Transform the current Second value into Julian Days (convenient for easily making operations with Julian Day fractions).
    public var inJulianDays: JulianDay { return JulianDay(value / 86400.0) }
    
    /// Returns a Second whose value is reduced to the 0..<60 range.
    public var reduced: Second { return Second(value.positiveTruncatingRemainder(dividingBy: 60.0)) }
    
    /// The standard description of the Second
    public var description: String { return String(format: "%.2f sec", value) }
}

