When I anchored character, system couldnt catch its position

Script for measuring position :

function hins(he)
	task.wait(5)
	he.Character.HumanoidRootPart.Anchored = true
	local handi = game.Workspace.paber:Clone()
	handi.Position = he.Character.HumanoidRootPart.Position
	handi.Parent = game.Workspace
	print("DDDDDDDDDAMG",handi.Position.X,handi.Position.Z)
end
function mid(he)
	while not he.Character do
		task.wait()
	end
	while task.wait(0.05) do
		print("we : "..he.Character.HumanoidRootPart.Position.X,he.Character.HumanoidRootPart.Position.Z)
	end
end
game.Players.PlayerAdded:Connect(hins)
game.Players.PlayerAdded:Connect(mid)

It prints character’s position every 0.05 sec and anchors him after 5 sec.
At that moment, it put a block ON THE SAME POSITION with character.

Result :

Not good. block doesnt placed at the right point.

Prints:

-- we : -919.4730224609375 -153.15879821777344  - Script:14
-- we : -951.70068359375 -124.97473907470703 - Script:14
-- we : -987.5469360351562 -90.01936340332031  - Script:14
-- << Anchored >>
-- we : -1004.3663940429688 -72.00325012207031   - Script:14
-- DDDDDDDDDAMG -1004.3663940429688 -72.00325012207031  - Script:7 (where block)
-- we : -1004.3663940429688 -72.00325012207031 (x851)   - Script:14 (where character)

Prints saying positions between block and character same.
Actual position of block : -1004.366, 3, -72.003
Actual position of character’s humanoidrootpart : -1087.396, 1.202, 29.365
I want to set block where the fast character anchored. How I solve it?

p.s

he.Character.Humanoid.WalkSpeed = 0
game:GetService'RunService'.Heartbeat:Wait()
he.Character.PrimaryPart.AssemblyLinearVelocity = Vector3.new(0, 0, 0)

I did it to stop character also but same result.