One way to add spread could be by using a lookAt CFrame and then rotating it by a random value between [0, math.pi*2].
Then use the spread value to offset the angle.
In this example spread should be a value between 0 and 180
local direction = (CFrame.lookAt(shootPoint, hit.Position)
* CFrame.Angles(0, 0, math.pi * 2 * math.random())
* CFrame.Angles(math.rad(spread/2) * math.random(), 0, 0)
).LookVector * range
local BRay = Ray.new(TracerStart, direction)