Help with DataStore

I found an issue while creating my game datastore.
Basicly the issue is that every other value saves. The only one that gets “corrupted” is the pickaxe value.

local DataStore = game:GetService("DataStoreService"):GetDataStore("MoneyData")    
local currencyName = "Gold"    
local ItemStorage = game:GetService("DataStoreService"):GetDataStore("ItemsStorage")    


function createCurrencyForPlayer(player)    

local folder = Instance.new("Folder")
folder.Name = "currency"

local currency = Instance.new("IntValue")
currency.Name = currencyName
currency.Parent = folder
folder.Parent = player

local items = Instance.new("Folder")
items.Name = "Items"
items.Parent = player
local wood = Instance.new("NumberValue")
wood.Name = "Wood"
wood.Value = 0
wood.Parent = items
local furnace = Instance.new("NumberValue")
furnace.Name = "Furnace"
furnace.Value = 0
furnace.Parent = items
local CurrentLand = Instance.new("NumberValue")
CurrentLand.Name = "CurrentLand"
CurrentLand.Value = 0
CurrentLand.Parent = items
local stone = Instance.new("NumberValue")
stone.Name = "Stone"
stone.Value = 0
stone.Parent = items
local gold = Instance.new("NumberValue")
gold.Name = "Gold"
gold.Value = 0
gold.Parent = items
local pickaxe = Instance.new("NumberValue")
pickaxe.Name = "Pickaxe"
pickaxe.Value = 0
pickaxe.Parent = items
local powder = Instance.new("NumberValue")
powder.Name = "Powder"
powder.Value = 0
powder.Parent = items
local paper = Instance.new("NumberValue")
paper.Name = "Paper"
paper.Value = 0
paper.Parent = items
local book = Instance.new("NumberValue")
book.Name = "Book"
book.Value = 0
book.Parent = items

local playerId = getPlayerId(player, currencyName)

local savedTable = nil
local savedData = nil
local savedWood = nil
local savedStone = nil
local savedGold = nil
local savedPickaxe = nil
local savedPowder = nil
local savedPaper = nil
local savedFurnace = nil
local savedBook = nil
--try to load
pcall(function()
	savedData = DataStore:GetAsync(playerId)
	savedTable = ItemStorage:GetAsync(playerId)
	savedWood = savedTable[1]
	savedStone = savedTable[2]
	savedGold = savedTable[3]
	savedPowder = savedTable[4]
	savedPaper = savedTable[5]
	savedFurnace = savedTable[6]
	savedBook = savedTable[7]
	savedPickaxe = savedTable[8]
end)

if savedPickaxe ~= nil then
	pickaxe.Value = tonumber(savedPickaxe)
	print(savedPickaxe)
	if savedPickaxe == 2 then
		local cloned = game.ServerStorage.Pickaxes["Wood Pickaxe"]:Clone()
		cloned.Parent = player.Backpack
	elseif savedPickaxe == 5 then
		local cloned = game.ServerStorage.Pickaxes["Stone Pickaxe"]:Clone()
		cloned.Parent = player.Backpack
	elseif savedPickaxe == 7 then
		local cloned = game.ServerStorage.Pickaxes["Gold Pickaxe"]:Clone()
		cloned.Parent = player.Backpack
	end
end
if savedWood ~= nil then
	wood.Value = tonumber(savedWood)
end
if savedBook ~= nil then
	book.Value = tonumber(savedBook)
end
if savedPaper ~= nil then
	paper.Value = tonumber(savedPaper)
end
if savedPowder ~= nil then
	powder.Value = tonumber(savedPowder)
end

if savedFurnace ~= nil then
	furnace.Value = tonumber(savedFurnace)
end

if savedStone ~= nil then
	stone.Value = tonumber(savedStone)
end

if savedGold ~= nil then
	gold.Value = tonumber(savedGold)
end
if savedData ~= nil then
	currency.Value = savedData
	print("data loaded")
	while true do wait(5)
		currency.Value = currency.Value+5
		savedData = currency.Value
	end
else
	currency.Value = 1000
	print("new player")
	while true do wait(5)
		currency.Value = currency.Value+5
		savedData = currency.Value
	end
end

end    



function saveData(player)    

local playerId = getPlayerId(player, currencyName)
local savedItems = {}
table.insert(savedItems, 1, player.Items.Wood.Value)
table.insert(savedItems, 2, player.Items.Stone.Value)
table.insert(savedItems, 3, player.Items.Gold.Value)
table.insert(savedItems, 4, player.Items.Powder.Value)
table.insert(savedItems, 5, player.Items.Paper.Value)
table.insert(savedItems, 6, player.Items.Furnace.Value)
table.insert(savedItems, 7, player.Items.Book.Value)
ItemStorage:SetAsync(playerId, savedItems)
DataStore:SetAsync(playerId, player.currency[currencyName].Value)
wait(1)
for i,v in pairs(player.Backpack:GetChildren()) do
	if string.find(v.Name, "Pickaxe") then
			table.insert(savedItems, 8, v.Power.Value)
	end
end
end     

When the games load, it load the Pickaxe value as “1”