Player Information Data Error

So it basically just shows time till payout then it gives u the money nd save obv, no error and it would now shit itself.

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local LocalPlayer = Players.LocalPlayer
local ReadyEvent = ReplicatedStorage:WaitForChild("Ready")

ReadyEvent.OnClientEvent:Wait()
task.spawn(function()
    local timeUntilPayout = 60
    while task.wait(0.1) do
        if timeUntilPayout == 0 then
            timeUntilPayout = 60
        else
            timeUntilPayout -= 1
        end

        if timeUntilPayout >= 60 then
            local minutes = math.floor(timeUntilPayout/60)
            local seconds = timeUntilPayout - (minutes*60)

            script.Parent.Parent.payoutFrame.payoutTime.Text = "Payout in "..minutes..":"..string.format("%0.2i", seconds)
        else
            script.Parent.Parent.payoutFrame.payoutTime.Text = "Payout in 0:"..string.format("%0.2i", timeUntilPayout)
        end

        local AddCommas = function (T)
            T = tostring(T)
            return T:reverse():gsub("%d%d%d", "%1,"):reverse():gsub("^,", "")
        end
        script.Parent.bankMoney.bankMoney.Text = "$"..AddCommas(LocalPlayer.PlayerData.Bank.Value)
        script.Parent.walletMoney.walletMoney.Text = "$"..AddCommas(LocalPlayer.PlayerData.Wallet.Value)
    end
end)

edit: It’s in a infinite loop. Once it gets to 0, it automatically becomes 60 again. Alternatively, you can just make your payout when it reaches 0.

local timeUntilPayout = 60
    while task.wait(0.1) do
        if timeUntilPayout == 0 then
-- you payout should be here
            timeUntilPayout = 60
        else
            timeUntilPayout -= 1
        end

It doesn’t work still no errors also