So I wanted to make a leaderboard system for a game, problem is, it does work until the second player gets a higher score then the first one, the second player goes to one, but the first player doesn't go to 2? It's a server script inside workspace (inside a folder) I commented the datastores because I work in team create and it bugs out :/ The problem is in function UpdateStats I believe.

local DataVersion = 1

local DataStore = game:GetService("DataStoreService")
local LeaderboardSave = DataStore:GetDataStore("LBS_"..DataVersion)

local key = 1902 -- Do NOT change! Change dataversion if you want to reset

LeaderBoard = {}
LeaderVals = {}

function UpdateSave()
	LeaderBoard = {}
	LeaderVals = {}
	
--	local NC = LeaderboardSave:GetAsync(key)
	local NC = {'empty', 'empty', 'empty', 'empty', 'empty', 'empty', 'empty', 'empty', 'empty', 'empty',}
	local LV = {100, 10, 9, 8, 7, 6, 0, 0, 0, 0}
	for index, save in pairs(NC) do
		table.insert(LeaderBoard,save)
	end
	for index, save in pairs(LV) do
		table.insert(LeaderVals,save)
	end
	
--	LeaderBoard:SetAsync(key,LeaderBoard)
end

function replaceStats(plr, num)
	
	LeaderBoard[num] = plr.Name
	LeaderVals[num] = plr:WaitForChild('Stats'):WaitForChild('NetWorth').Value
	print('replaced '..num)
	
end
function UpdateStats()
	wait(0.1)
	
	for index, plr in pairs(game.Players:GetPlayers()) do
		local net = plr:WaitForChild('Stats'):WaitForChild('NetWorth')
		if LeaderVals[1] < net.Value then
			replaceStats(plr, 1)
		elseif LeaderVals[2] < net.Value then
			replaceStats(plr, 2)
		elseif LeaderVals[3] < net.Value then
			replaceStats(plr, 3)
		elseif LeaderVals[4] < net.Value then
			replaceStats(plr, 4)
		elseif LeaderVals[5] < net.Value then
			replaceStats(plr, 5)
		end
	end
end

function DisplayStats()
	local TLs = workspace:WaitForChild('HighStats'):WaitForChild('Main'):WaitForChild('SurfaceGui')
	
	TLs.Player1.Text = LeaderBoard[1]..': '..LeaderVals[1]	
	TLs.Player2.Text = LeaderBoard[2]..': '..LeaderVals[2]
	TLs.Player3.Text = LeaderBoard[3]..': '..LeaderVals[3]
	TLs.Player4.Text = LeaderBoard[4]..': '..LeaderVals[4]
	TLs.Player5.Text = LeaderBoard[5]..': '..LeaderVals[5]
	TLs.Player6.Text = LeaderBoard[6]..': '..LeaderVals[6]
	TLs.Player7.Text = LeaderBoard[7]..': '..LeaderVals[7]
	TLs.Player8.Text = LeaderBoard[8]..': '..LeaderVals[8]
	TLs.Player9.Text = LeaderBoard[9]..': '..LeaderVals[9]
	TLs.Player10.Text = LeaderBoard[10]..': '..LeaderVals[10]
end

while wait(1) do
	UpdateSave()
	UpdateStats()
	DisplayStats()
end