Lerping a cannon

I am trying to lerp 2 parts of a cannon. 1 part is the base. It rotates on an X and Z rotation, and doesn’t look up or down. It only turns around. The second part Is the barrel. The barrel is what shoots the cannonball, and I need it to look up and down, as well as rotate with the base, because if it doesn’t the whole thing becomes unhinged. and swings around wildy. The base and the barrel are in 2 different models, and are in workspace.

The barrel rotates on the X and Z axis perfectly along with the base, but the issue is the Y axis. It barely changes at all. If I point my mouse straight down, it looks down maybe 10 degrees maximum. If i point it as high as I can, it goes upwards 10 degrees maximum.

Here is the model if you need it. https://create.roblox.com/store/asset/139518264810988/Cannon
(Ignore the bad model quality please, I will make it look better in the future.)

here is my code.

task.wait(1)
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local Mouse = LocalPlayer:GetMouse()
Mouse.TargetFilter = game.Workspace.Cannon

local cannon = game.Workspace.Cannon--the base
local Pointer = game.Workspace.Pointer--the barrel

while true do
	task.wait(.01)

	if game.Workspace.Cannon.Seat.Occupant ~= nil then
		
		local seatPosition = cannon.Seat.Position
		local mousePosition = Mouse.Hit.Position

		
		local targetCFrame = CFrame.lookAt(seatPosition, Vector3.new(mousePosition.X,seatPosition.Y,mousePosition.Z))

		
		local currentCFrame = cannon.PrimaryPart.CFrame
		local rotationSpeed = 0.05 
		local rotationSpeed2 = 0.05--speeds for lerping
		
		local lookAtCFrameY = CFrame.new(Pointer.RotationPart.Position, Vector3.new(mousePosition.X,mousePosition.Y,mousePosition.Z)+Pointer.RotationPart.CFrame.LookVector)

		game.Workspace.NewRotation.CFrame = lookAtCFrameY+Vector3.new(0,5,0)--offset the barrel's position to the right spot.
		cannon:SetPrimaryPartCFrame(currentCFrame:Lerp(targetCFrame, rotationSpeed))--lerp the cannon base.
		
		local Angles = CFrame.Angles(math.rad(game.Workspace.NewRotation.Rotation.X),0,0)--the  up and down rotation.
		
		Pointer:SetPrimaryPartCFrame((cannon.PrimaryPart.CFrame+Vector3.new(0,5,0)):Lerp((cannon.PrimaryPart.CFrame+Vector3.new(0,5,0))*Angles, rotationSpeed))--set the CFrame to the Cframe of the base, offset it, and apply the rotation.
		
end end