I am making a module to lerp a brick's position to a new one. For some reason it goes past the spot, never actually hitting the correct position. I can't solve the problem, probably something with my math, or setup, but other than that it should be fine. Thanks in advance!

local module = {}

module.lerpBrickPosition = function(brick, position, lerpTime, bodyPos, stepAmount)
	--[[
		"brick" ........ The brick to lerp
		"position" ..... The position to move it to
		"lerpTime" ..... The total time to move it
		"stepAmount" ... (OPTIONAL) The amount of steps to make to lerp
	--]]
	
	local xDistance = -(brick.Position.X - position.X)
	local yDistance = -(brick.Position.Y - position.Y)
	local zDistance = -(brick.Position.Z - position.Z)
	
	local distance = dLAD(brick.Position, position)
	
	local steps = stepAmount or (100)
	
	repeat
		local newPos = Vector3.new(xDistance/steps + brick.Position.X, yDistance/steps + brick.Position.y, zDistance/steps + brick.Position.z)
		brick.Position = newPos
		if bodyPos ~= nil then
			bodyPos.position = newPos
		end
		wait(lerpTime/steps)
	until brick.Position == position
end

function dLAD(position, position2) -- Returns the largest axis difference (Determine Largest Axis Difference)
	local x = math.abs(position.X - position2.X)
	local y = math.abs(position.Y - position2.Y)
	local z = math.abs(position.Z - position2.Z)
	if x >= y and x >= z then
		return x
	elseif y >= z then
		return y
	else
		return x
	end
end

return module