     /// - Parameter otherUnit: Specified in which `Unit` 
     ///   new `Timestamp` should be represented.
     func converted(to otherUnit: Unit) -> Timestamp {
-        return Timestamp(value: baseValue / otherUnit.baseValueMultiplier, unit: otherUnit)
+        return Timestamp(baseValue: baseValue, unit: otherUnit)
     }
 
     /// Returns a new instance of `Timestamp` with given `Unit`.

                return 1000 * 60
            case .hours:
                return 1000 * 60 * 60
            case .frames(frameRate: let rate):
                return 1000 / rate
            }
        }

    init(value: Int, unit: Unit) {
        self.init(value: Double(value), unit: unit)
    }

    /// Creates a new instance with given `baseValue` in specified
    /// `unit`. `value` is calculaed based on `baseValue` and `unit`.
    ///
    /// - Parameter:
    ///     - baseValue: Calculated baseValue.
    ///     - unit:      Unit in which `Timestamp` is represented.
    init(baseValue: Double, unit: Unit) {
        self.baseValue = baseValue
        self.unit = unit
        self.value = baseValue / unit.baseValueMultiplier
    }

    /// Creates a new instance with given `baseValue` in specified
    /// `unit`. `value` is calculaed based on `baseValue` and `unit`.
    ///
    /// - Parameters:
    ///     - baseValue: Calculated baseValue.
    ///     - unit:      Unit in which `Timestamp` is represented.
    init(baseValue: Int, unit: Unit) {
        self.init(baseValue: Double(baseValue), unit: unit)
    }
}

// MARK: - Unit Calculations

extension Timestamp {

    /// Returns a number of units calculated based on current
    /// `baseValue` rounded down.
