diff --git a/mp.cabal b/mp.cabal
--- a/mp.cabal
+++ b/mp.cabal
@@ -1,5 +1,5 @@
 name:               mp
-version:            0.2.0
+version:            0.2.1
 cabal-version:      >=1.16
 build-type:         Simple
 author:             Piotr Borek <piotrborek@op.pl>
diff --git a/src/Mp/Player/Server.hs b/src/Mp/Player/Server.hs
--- a/src/Mp/Player/Server.hs
+++ b/src/Mp/Player/Server.hs
@@ -58,10 +58,9 @@
     state <- readMVar serverState
     encodeFile (cfgDir </> "server.state") state
 
-saveServerIndex :: MVar ServerState -> IO ()
-saveServerIndex serverState = do
+saveServerIndex :: ServerState -> IO ()
+saveServerIndex state = do
     cfgDir <- configDirFilePath
-    state <- readMVar serverState
     encodeFile (cfgDir </> "server.index") (PlayingIndex $ getPlaying state)
 
 startServerBlocking :: String -> IO ()
@@ -139,6 +138,8 @@
         let list = getPlaylist st
         let index = indexFunction $ getPlaying st
 
+        when (and [index >= 0, index < length list]) $ saveServerIndex st
+
         if and [index >= 0, index < length list]
             then
                 modifyPlayerPlay st player index
@@ -153,8 +154,6 @@
                     modifyPlayerPlay st player newIndex
                 else
                     modifyPlayerStop st player
-
-    saveServerIndex serverState
 
 modifyPlayerStop :: ServerState -> GstPlayer -> IO ServerState
 modifyPlayerStop st player = do
