                             seek(-1);
                         }
                         return;
-                    } else {
-                        // buffer <= 0.1 and not EOS, pause playback
+                    } else if (buffer <= 0.1) {
+                        // playing and buffer <= 0.1 and not EOS, pause playback
                         super.pause();
                     }
+                    _lastNetStreamTime = super.time;
                 }
                 // if buffer len is below lowBufferLength, get into buffering state
                 if (!reachedEnd && !liveLoadingStalled && buffer < _bufferThresholdController.lowBufferLength) {

                Log.info("HLSNetStream:close");
            }
            super.close();
            _watchedDuration = _skippedDuration = 0;
            _streamBuffer.stop();
            _timer.stop();
            _setPlaybackState(HLSPlayStates.IDLE);

                reachedEnd : Boolean = _streamBuffer.reachedEnd,
                liveLoadingStalled : Boolean = _streamBuffer.liveLoadingStalled;
            // Log.info("netstream/total:" + super.bufferLength + "/" + this.bufferLength);

            if (_seekState != HLSSeekStates.SEEKING) {
                if (_playbackState == HLSPlayStates.PLAYING) {
                  /* check if play head reached end of stream.
                        this happens when
                            playstate is PLAYING
                        AND last fragment has been loaded,
                            either because we reached end of VOD or because live loading stalled ...
                        AND NetStream is almost empty(less than 2s ... this is just for safety ...)
                        AND StreamBuffer is empty(it means that last fragment tags have been appended in NetStream)
                        AND playhead is not moving anymore (NetStream.time not changing overtime)
                    */
                    if((reachedEnd || liveLoadingStalled) &&
                       bufferLength <= 2 &&
                       _streamBuffer.bufferLength == 0 &&
                       _lastNetStreamTime &&
                       super.time == _lastNetStreamTime) {
                        // playhead is not moving anymore ... append sequence end.
                        super.appendBytesAction(NetStreamAppendBytesAction.END_SEQUENCE);
                        super.appendBytes(new ByteArray());
                        // have we reached end of playlist ?
                        if(reachedEnd) {
                            // stop timer, report event and switch to IDLE mode.
                            _timer.stop();
                            CONFIG::LOGGING {
                                Log.debug("reached end of VOD playlist, notify playback complete");
