     /// Pauses audio player. Calling play() will resume from the paused time.
     public func pause() {
         guard isPlaying, !isPaused else { return }
-
+        stoppedTime = getCurrentTime()
         playerNode.pause()
         isPaused = true
+    }
+    
+    /// Gets the accurate playhead time regardless of seeking and pausing
+    /// Can't be relied on if playerNode has its playstate modified directly
+    public func getCurrentTime() -> TimeInterval {
+        if let nodeTime = self.playerNode.lastRenderTime, let playerTime = self.playerNode.playerTime(forNodeTime: nodeTime) {
+           return Double(Double(playerTime.sampleTime) / playerTime.sampleRate) + segmentStartTime
+        }
+        return stoppedTime
     }
 }
 

    public var duration: TimeInterval {
        bufferDuration ?? file?.duration ?? 0
    }

    /// Completion handler to be called when file or buffer is done playing.
    /// This also will be called when looping from disk,

    /// Stop audio player. This won't generate a callback event
    public func stop() {
        guard isPlaying else { return }
        stoppedTime = getCurrentTime()
        isPlaying = false
        playerNode.stop()
        scheduleTime = nil
