Weld function welds wrongly

Basically I want a magic circle to appear in front of the humanoidrootpart when I use a tool and when I use the tool for the first time then it works perfectly, but the second and third time ect. would move the magic circle to the right and I don’t know how to fix it.

and here’s the code:

local PosMC = char:WaitForChild("HumanoidRootPart").Position
local TorsoWeld = char:WaitForChild("HumanoidRootPart")
local CircleWeld = Wave.WindMC:Clone()
CircleWeld.Parent = char
CircleWeld.Size = Vector3.new(0.1,0.1,0.1)
CircleWeld.Position = (PosMC)

local weld = Instance.new("ManualWeld")
		weld.Name = "MCWeld"
		weld.Parent = workspace
		weld.Part0 = TorsoWeld
		weld.Part1 = CircleWeld
		CircleWeld.Position = CircleWeld.Position + Vector3.new(0.1,0.1,-5)
	
	for i = 1,10,1 do
		CircleWeld.Size = CircleWeld.Size + Vector3.new(0.75,0.75,0)
		CircleWeld:FindFirstChild("Decal1").Transparency = CircleWeld:FindFirstChild("Decal1").Transparency - 0.1
		CircleWeld:FindFirstChild("Decal2").Transparency = CircleWeld:FindFirstChild("Decal2").Transparency - 0.1
		wait(0.0000001)
	end

idk if this would work but try this instead

change this into such that it deletes the weld after the whole firing is done, then when it wants to fire the magic again, create the weld once again

-- replace your current weld script that I quoted into this
function createweld()
local weld = Instance.new("ManualWeld")
		weld.Name = "MCWeld"
		weld.Parent = workspace
		weld.Part0 = TorsoWeld
		weld.Part1 = CircleWeld
end
-- after firing the magic and after the magic is completely done add this
weld:Destroy()
-- when the player activates the magic
createweld()

weld:Destroy() pops up as an error

I think its because its probably Welded to the RootPart, Try:

weld.Part0 = nil
weld.Part1 = nil
weld:Destroy()

Whats the error? Please specify