Hello! I'm making a Sliding GUI Text that will be synced with my website. However, the problem is, is that obviously because when there is a lot of text, the text is positioned somewhere else or it cuts off part of it. Is there a way to fix that? Currently I have this:

place = "Place1"

function explode(str, separator, withpattern) -- credit: https://code.google.com/p/divranspack/source/browse/trunk/+divranspack/Non+Gmod+Things/Minecraft+Lua+Server/luadriver/string.lua?r=475
        if separator == "" then
                local ret = {}
                for i=1,#str do
                        ret[i] = string.sub(str,i,i)
                end
                return ret
        end
    local ret = {}
    local index,lastPosition = 1,1
    if not withpattern then separator = string.gsub( separator, "[%-%^%$%(%)%%%.%[%]%*%+%?]", "%%%1" ) end
    for startPosition,endPosition in string.gmatch( str, "()" .. separator.."()" ) do
        ret[index] = string.sub( str, lastPosition, startPosition-1)
        index = index + 1
        lastPosition = endPosition
    end
    ret[index] = string.sub( str, lastPosition)
    return ret
end

pages = {}
curpage = ""
curpagen = 0

prevsav = ""

coroutine.resume(coroutine.create(function()
	while true do
		local sav = game:GetService("HttpService"):GetAsync("http://www.mxmcube.net/billy/news/news.php",true)
		if sav ~= prevsav then
			prevsav = sav
			local pages2 = explode(sav,"(;break;)")
			if #pages2 >= 1 then
				for i,_ in pairs(pages) do
					table.remove(pages,i)
				end
				for _,v in pairs(pages2) do
					local one,x = string.gsub(v,"%%player%%",script.Parent.Parent.Parent.Parent.Parent.Name)
					local two,x = string.gsub(one,"%%place%%",place)
					table.insert(pages,two)
				end
			else
				for i,_ in pairs(pages) do
					table.remove(pages,i)
				end
				table.insert(pages,sav)
			end
			curpagen = 1
			curpage = pages[1]
		end
		wait(4)
	end
end))

repeat wait() until #pages >= 1
coroutine.resume(coroutine.create(function()
	script.Parent.TextLabel.Size = UDim2.new(0,1,1,0)
	script.Parent.TextLabel.Position = UDim2.new(tonumber("1."..string.len(script.Parent.TextLabel.Text).."")/2,0,0,0) -- problem here
	script.Parent.TextLabel.TextTransparency = i
	script.Parent.TextLabel.TextStrokeTransparency = i
	while true do
		curpagen = curpagen + 1
		if curpagen > #pages then
			curpagen = 1
		end
		curpage = pages[curpagen]
		script.Parent.TextLabel.Text = curpage
		script.Parent.TextLabel.Size = UDim2.new(0,1,1,0)
		local ting = tonumber("1."..(string.len(script.Parent.TextLabel.Text)/2).."") -- problem here
		print(ting,reps)
		script.Parent.TextLabel.Position = UDim2.new(ting,0,0,0)
		script.Parent.TextLabel:TweenPosition(UDim2.new(0,0,0,0),"Out","Linear",30,false,nil) -- problem here
		coroutine.resume(coroutine.create(function()
			for i=1,0,-0.1 do
				script.Parent.TextLabel.TextTransparency = i
				script.Parent.TextLabel.TextStrokeTransparency = i
				wait(0.1)
			end
		end))
		wait(29)
		for i=0,1,0.1 do
			script.Parent.TextLabel.TextTransparency = i
			script.Parent.TextLabel.TextStrokeTransparency = i
			wait(0.1)
		end
	end
end))

Does anyone know something like a mathematical formulae for a sliding text GUI that is properly positioned? Thank you.