diff --git a/advtrains/stop_on_inactivity.lua b/advtrains/stop_on_inactivity.lua
index 8d6addd1503b38ebf8e6133a198a0a976560f95a..b7acfa8f77fccf4efbbaa336102d59e0fdf8100b 100644
--- a/advtrains/stop_on_inactivity.lua
+++ b/advtrains/stop_on_inactivity.lua
@@ -1,6 +1,6 @@
 local DISABLE_TIMEOUT = tonumber(minetest.settings:get("kif_custom.advtrains.disable_timeout")) or 60 * 60
 
-local trains_disabled = #minetest.get_connected_players == 0
+local trains_disabled = #minetest.get_connected_players() == 0
 local disable_job = nil
 
 
@@ -11,15 +11,17 @@ minetest.register_on_joinplayer(function(player, last_login)
 		disable_job = nil
 	end
 	if trains_disabled then
+		minetest.log("action", "[kif_custom] Enabling trains.")
 		trains_disabled = false
 	end
 end)
 
 minetest.register_on_leaveplayer(function(player, timed_out)
-	if #minetest.get_connected_players() == 0 then
+	if #minetest.get_connected_players() <= 1 then	-- leaving player is still counted
 		-- deactivate trains
 		if disable_job == nil then
 			disable_job = minetest.after(DISABLE_TIMEOUT, function()
+				minetest.log("action", "[kif_custom] No player logged in for a time. Disabling trains.")
 				trains_disabled = true
 				disable_job = nil
 			end)
diff --git a/init.lua b/init.lua
index 06e50e2ad4c18701095e20df6896700275596937..3c8f6f6ca7e1e1d64a87c28b5be43d97726ada3e 100644
--- a/init.lua
+++ b/init.lua
@@ -13,6 +13,8 @@ dofile(MP.."/missing_recipes.lua")
 dofile(MP.."/advtrains/survival_recipes.lua")
 -- make trains ignore microblocks and some others
 dofile(MP.."/advtrains/ignore_collisions.lua")
+-- make trains stop some time after last player left server
+dofile(MP.."/advtrains/stop_on_inactivity.lua")
 
 -- warning message for default password (if set)
 if minetest.settings:get("default_password") then