 	///
 	/// - Parameter frameDuration: The duration of a single frame as a CMTime value.
 	/// - Returns: A tuple with hours, minutes, seconds, and frames as Int and String values.
-	public func timeAsTimecode(usingFrameDuration frameDuration: CMTime) -> (hours: Int, minutes: Int, seconds: Int, frames: Int, hoursString: String, minutesString: String, secondsString: String, framesString: String, timecodeString: String) {
+	public func timeAsTimecode(usingFrameDuration frameDuration: CMTime, dropFrame: Bool) -> (hours: Int, minutes: Int, seconds: Int, frames: Int, hoursString: String, minutesString: String, secondsString: String, framesString: String, timecodeString: String) {
 		
 		let framerate: Double
 		if frameDuration == CMTime(value: 1001, timescale: 24000) { // If the framerate is 23.976, make the framerate 24 per SMPTE

		let secondsString = formatter.string(from: NSNumber(value: seconds))!
		let framesString = formatter.string(from: NSNumber(value: frames))!
		
		let counter: String = hoursString + ":" + minutesString + ":" + secondsString + ":" + framesString
		
		return (Int(hours), Int(minutes), Int(seconds), Int(frames), hoursString, minutesString, secondsString, framesString, counter)
	}

			framerate = 1 / (frameDuration.seconds)
		}
		
		// This block below provides correct timing readout for 23.98 NDF, 29.97 NDF and 59.98 NDF
		var numberOfFrames: Double
		switch frameDuration {
		case CMTime(value: 1001, timescale: 24000) where dropFrame == false:	// 23.98 NDF
			numberOfFrames = self.seconds / CMTime(value: 100, timescale: 2400).seconds
		case CMTime(value: 1001, timescale: 30000) where dropFrame == false:	// 29.97 NDF
			numberOfFrames = self.seconds / CMTime(value: 100, timescale: 3000).seconds
		case CMTime(value: 1001, timescale: 60000) where dropFrame == false:	// 59.98 NDF
			numberOfFrames = self.seconds / CMTime(value: 100, timescale: 6000).seconds
		default:
			numberOfFrames = self.seconds / frameDuration.seconds
		}
		
		// Round the number of frames so it's at a frame boundary
		numberOfFrames = round(numberOfFrames)
		
		// Calculate time values
		let hours = floor(numberOfFrames / (3600 * framerate))
		let minutes = floor((numberOfFrames / (60 * framerate)).truncatingRemainder(dividingBy: 60))
		let seconds = floor((numberOfFrames / framerate).truncatingRemainder(dividingBy: 60))
		let frames = numberOfFrames.truncatingRemainder(dividingBy: framerate)
		
		// Format strings
		let formatter = NumberFormatter()
		formatter.paddingCharacter = "0"
		formatter.minimumIntegerDigits = 2
