             // アセットの総時間が最大時間よりも少ないため、先頭が起点になる
             (indexAtZero, timeAtZero) = (0, kCMTimeZero)
         } else {
-            if let current = _current {
-                let targets = reverse(_assets[0...current.index])
-                // 現在の再生場所を起点にrate=0.0地点を探索するが、
-                // ループの中で先頭だけを特別視するのを避けるため(すべてdurationで計算したい)、
-                // ここでゲタを履かせておく
-                let initialOffsetTime = current.asset.duration - _currentPresentationTimestamp
-                var offset = maxDuration * _currentPosition + initialOffsetTime
-
-                if let resultAtZero = _positionAt(targets, offset: offset, reverseOrder: true) {
-                    (indexAtZero, timeAtZero) = resultAtZero
-                    expectedOffset += timeAtZero
-                } else {
-                    return nil
-                }
+            let current = _current
+
+            // 現在の再生場所を起点にrate=0.0地点を探索するが、
+            // ループの中で先頭だけを特別視するのを避けるため(すべてdurationで計算したい)、
+            // ゲタを履かせた上で0.0位置を調べる
+            let initialOffset = current.asset.duration - _currentPresentationTimestamp
+            let offset = maxDuration * _currentPosition + initialOffset
+
+            let targets = reverse(_assets[0...current.index])
+            if let resultAtZero = _positionAt(targets, offset: offset, reverseOrder: true) {
+                indexAtZero = current.index - resultAtZero.0
+                timeAtZero = resultAtZero.1
             } else {
                 return nil
             }

                // 次のタイミングで.Completedに遷移するため、ここには来ないはず
                _readers.removeAtIndex(0)
            default:
                assert(false, "Invalid state \(Int(target.status.rawValue)). Something is wrong.")
                _readers.removeAtIndex(0)
            }
        }

        // 2) 算出した0.0位置からexpectedOffsetを足した場所を調べて返す
        let targets = Array(_assets[indexAtZero..<_assets.endIndex])

        if let result = _positionAt(targets, offset: offsetTime + timeAtZero, reverseOrder: false) {
            return (result.0 + indexAtZero, result.1)
        } else {
            return nil
