             // loop through all tags and find index position of header tags located before start position
             for (var i : int = 0; i < tags.length; i++) {
                 var data : FLVData = tags[i];
-                if (data.position - (_time_sliding - data.sliding) <= start_position) {
+                if (data.position_absolute - _time_sliding <= start_position) {
                     lastIdx = i;
                     // current tag is before requested start position
                     // grab AVC/AAC/DISCONTINUITY/KEYFRAMES tag located just before


        private function get max_audio_pos() : Number {
            var max_pos_ : Number = Number.NEGATIVE_INFINITY;
            if (_audioTags.length) max_pos_ = Math.max(max_pos_, _audioTags[_audioTags.length - 1].position - (_time_sliding - _audioTags[_audioTags.length - 1].sliding ));
            return max_pos_;
        }

        private function get max_video_pos() : Number {
            var max_pos_ : Number = Number.NEGATIVE_INFINITY;
            if (_videoTags.length) max_pos_ = Math.max(max_pos_, _videoTags[_videoTags.length - 1].position - (_time_sliding - _videoTags[_videoTags.length - 1].sliding ));
            return max_pos_;
        }


            var headercounter : uint = 0;
            var _newheaderTags : Vector.<FLVData> = new Vector.<FLVData>();
            for each (var data : FLVData in _headerTags) {
                if ((data.position_absolute - _time_sliding ) < clipping_position) {
                    switch(data.tag.type) {
                        case FLVTag.DISCONTINUITY:
                            _disHeader = data;
