                 return windowEnd
             } else {
                 // 見つからなかった場合、全アセットの最後端を1.0として扱う
-                return AssetPosition(_assets.count-1, _assets.last!.duration)
+                return AssetPosition(_assets.count-1, _assets.last!.asset.duration)
             }
         }
         return nil


    // MARK: Privates

    private var _assets = [AVAsset]() // アセット
    private var _readers = [AssetReaderFragment]() // リーダー

    private var _currentPresentationTimestamp: CMTime = kCMTimeZero


        // 繰り返し処理を簡略化するためにゲタを履かせる
        var offset = isSignMinus ?
            (offset * -1.0 + assets[from.index].asset.duration - from.time) :
            (offset + from.time)

        for (i, holder) in enumerate(targets) {

            if offset <= holder.asset.duration {
                return isSignMinus ?
                    AssetPosition(from.index - i, holder.asset.duration - offset) :
                    AssetPosition(from.index + i, offset)
            }
            offset -= holder.asset.duration
        }
        return nil
    }
