 		}
 
 		/// Calendar
-		public var calendar = Calendar.autoupdatingCurrent
+        public var calendar = Calendar.autoupdatingCurrent
 
 		public func apply(toFormatter formatter: DateComponentsFormatter) {
-			formatter.allowsFractionalUnits = allowsFractionalUnits
-			formatter.allowedUnits = allowedUnits
-			formatter.collapsesLargestUnit = collapsesLargestUnit
-			formatter.maximumUnitCount = maximumUnitCount
-			formatter.unitsStyle = unitsStyle
-			formatter.calendar = calendar
+            formatter.calendar = calendar
+            
+            if let allowsFractionalUnits = self.allowsFractionalUnits {
+                formatter.allowsFractionalUnits = allowsFractionalUnits
+            }
+            if let allowedUnits = self.allowedUnits {
+                formatter.allowedUnits = allowedUnits
+            }
+            if let collapsesLargestUnit = self.collapsesLargestUnit {
+                formatter.collapsesLargestUnit = collapsesLargestUnit
+            }
+            if let maximumUnitCount = self.maximumUnitCount {
+                formatter.maximumUnitCount = maximumUnitCount
+            }
+            if let zeroFormattingBehavior = self.zeroFormattingBehavior {
+                formatter.zeroFormattingBehavior = zeroFormattingBehavior
+            }
+            if let unitsStyle = self.unitsStyle {
+                formatter.unitsStyle = unitsStyle
+            }
 		}
 
 		public init() {}

	///   - style: style of the units, by default is `.abbreviated`
	/// - Returns: string representation
	func toIntervalString(options callback: ((inout ComponentsFormatterOptions) -> Void)? = nil) -> String {
		let formatter = TimeInterval.sharedFormatter()
		var options = ComponentsFormatterOptions()
		callback?(&options)
		options.apply(toFormatter: formatter)
		return (formatter.string(from: self) ?? "")
	}

	/// Format a time interval in a string with desidered components with passed style.

	///
	/// - Parameter zero: behaviour with zero.
	/// - Returns: string representation
	func toClock(zero: DateComponentsFormatter.ZeroFormattingBehavior =  [.pad, .dropLeading]) -> String {
		return toIntervalString(options: {
            $0.collapsesLargestUnit = true
            $0.maximumUnitCount = 0
			$0.unitsStyle = .positional
            $0.locale = Locales.englishUnitedStatesComputer
			$0.zeroFormattingBehavior = zero
		})
	}
