Help on bezier curve

Hi, please view the gif, why does the ball go all the way over there ?
https://gyazo.com/d86207d12d76d6104fbd10bd70844f8c

local function lerp(p0,p1,t)
			return p0*(1-t) + p1*t
		end

		local function quad(p0,p1,p2, t)
			local l1 = lerp(p0,p1,t)
			local l2 = lerp(p1,p2,t)
			local quad = lerp(l1,l2,t)
			return quad
		end

			local start = HRP.Position + Vector3.new(0,0,3)
			local finish = Mhit.Position
			local middle = (finish - start) + Vector3.new(0,30,0)
			local fireball = game.ReplicatedStorage.fireball:Clone()
			fireball.Parent = workspace

			for i = 1, 100 do
				local  t = i/100
				local updated = quad(start,middle,finish,t)
				fireball.Position = updated
				wait(0.01)
			end

			wait(2)
			fireball:Destroy()

Please edit the post instead of reposting next time, anyways I have posted a method which is what you were trying to do in the other one please check it out.