     return if @isPlaying()
 
     @playing = true
+    @resumedAt = @now()
     frame = @timing()[@frameNo]
     [delay, count] = frame
-    delay -= @timeElapsedBeforePause
-    @processFrameWithDelay(delay)
+    delayMs = delay * 1000
+    delayLeft = delayMs - @totalFrameWaitTime
+    @processFrameWithDelay(delayLeft)
     @trigger('movie-playback-resumed')
 
   togglePlay: ->


  start: ->
    if @options.benchmark
      @startTime = (new Date).getTime()

    @playing = true
    @lastFrameTime = (new Date()).getTime()
    @nextFrame()

  stop: ->
    @playing = false
    clearInterval @nextFrameTimeoutId
    @timeElapsedBeforePause = (new Date()).getTime() - @lastFrameTime

  restart: ->
    @reset()

    clearInterval @timeReportId

  currentTime: ->
    @completedFramesTime + @currentFrameTime()

  currentFrameTime: ->
    if @isPlaying()
      @playingFrameTime()
    else if @isPaused()
      @pausedFrameTime()
    else
      0

  playingFrameTime: ->
    if @frameWasPaused()
      @currentFrameWithPauseTime()
    else
      @currentFrameWithNoPauseTime()

  frameWasPaused: ->
    !!@pausedAt

  currentFrameWithPauseTime: ->
    @totalFrameWaitTime + @sinceResumeTime()

  currentFrameWithNoPauseTime: ->
    @now() - @lastFrameAt

  sinceResumeTime: ->
    @now() - @resumedAt

  pausedFrameTime: ->
    @totalFrameWaitTime

  clearPauseState: ->
    @pausedAt = undefined
    @resumedAt = undefined
    @totalFrameWaitTime = 0

  nextFrame: ->
    if frame = @timing()[@frameNo]
