Make C0 Always point to camera's lookvector and adjust for animation offsets

So I’ve got this weapons system that I’ve adapted for r15, and in first person I’ve got a system for making the rootjoint’s c0 face the camera’s lookvector
The problem is, when the player’s wrist is animated in a way that doesn’t make it already point straight (ie points it off at an angle slightly due to the animation), the gun itself doesn’t point straight ahead.


Here’s footage of what I mean
Notice how when I aim, the gun is tilted slightly leftwards because of the way the hand is animted
The caveman way to fix this is just to try my best to make the hand point straight in the animation, but I want to fix it through a script.
My idea was to adjust the RightGrip’s C0 and try to make it face the camera, I tried this:

--(running on renderstepped)
	if humanoid.Health > 0 and toolgrip then
		local goalDir = Camera.CFrame.LookVector * 9999929939999
		local lookatCF = CFrame.lookAt(tool.Handle.Position, goalDir)
		local Xa, Ya, Za = lookatCF:ToEulerAnglesXYZ()
		
		toolgrip.C0 = toolgripOGC0 * CFrame.Angles(Xa, Ya, Za)	

	end

but the result didn’t really come out the way I wanted

What I want to make is having the rightgrip’s c0 change every frame to always have the gun pointed forward, independent of the rotation of the player’s arm etc.

Solving this would also fix a similar issue I have with the upper torso making the whole pseudo viewmodel point off to one side when it’s animated

been a few hours, still no luck