                     }
                     // switch back to IDLE state to request new fragment at lowest level
                     _loadingState = LOADING_IDLE;
-                } else if(HLSSettings.fragmentLoadSkipAfterMaxRetry == true) {
+                } else if(HLSSettings.fragmentLoadSkipAfterMaxRetry == true && _fragSkipCount < HLSSettings.maxSkippedFragments || HLSSettings.maxSkippedFragments < 0) {
                     /* check if loaded fragment is not the last one of a live playlist.
                         if it is the case, don't skip to next, as there is no next fragment :-)
                     */

                _fragRetryTimeout = 1000;
                _fragPrevious = _fragCurrent;
                _fragSkipping = true;
                // set fragment first loaded to be true to ensure that we can skip first fragment as well
                _fragmentFirstLoaded = true;
                _loadingState = LOADING_IDLE;

            _fragmentFirstLoaded = false;
            _fragPrevious = null;
            _fragSkipping = false;
            _fragSkipCount = 0;
            _levelNext = -1;
            _timer.start();
        }
