 
             if (_pts_analyzing == false) {
                 if (last_seqnum == _levels[level].end_seqnum) {
-                    // if last segment was last fragment of VOD playlist, notify last fragment loaded event, and return
+                    // if last segment of level already loaded, return
                     if (_hls.type == HLSTypes.VOD) {
-                        _hls.dispatchEvent(new HLSEvent(HLSEvent.LAST_VOD_FRAGMENT_LOADED));
-                        // stop loading timer as well, as no other fragments can be loaded
-                        _timer.stop();
-                    }
-                    return LOADING_WAITING_LEVEL_UPDATE;
+                        // if VOD playlist, loading is completed
+                        return LOADING_COMPLETED;
+                    } else {
+                        // if live playlist, loading is pending on manifest update
+                        return LOADING_WAITING_LEVEL_UPDATE;
+                    }
                 } else {
                     // if previous segment is not the last one, increment it to get new seqnum
                     new_seqnum = last_seqnum + 1;

                        calling _loadfragment will also reload key */
                        _loadfragment(_frag_current);
                        _loading_state = LOADING_IN_PROGRESS;
                    }
                    break;
            }

        private static const LOADING_STALLED : int = 3;
        private static const LOADING_FRAGMENT_IO_ERROR : int = 4;
        private static const LOADING_KEY_IO_ERROR : int = 5;
        private static const LOADING_COMPLETED : int = 6;

        /** Create the loader. **/
        public function FragmentLoader(hls : HLS, audioTrackController : AudioTrackController, streamBuffer : StreamBuffer) : void {
