diff --git a/src/imports/multimedia/qdeclarativeaudio.cpp b/src/imports/multimedia/qdeclarativeaudio.cpp
index fc13323e8b07714808895b028e99a1ccf1357f24..652296509c68809c89f8f15bcaa7861df8c112c7 100644
--- a/src/imports/multimedia/qdeclarativeaudio.cpp
+++ b/src/imports/multimedia/qdeclarativeaudio.cpp
@@ -900,7 +900,7 @@ void QDeclarativeAudio::componentComplete()
 void QDeclarativeAudio::_q_statusChanged()
 {
     if (m_player->mediaStatus() == QMediaPlayer::EndOfMedia && m_runningCount != 0) {
-        m_runningCount -= 1;
+        m_runningCount = std::max(m_runningCount - 1, -2);
         m_player->play();
     }
     const QMediaPlayer::MediaStatus oldStatus = m_status;