Heli script cant turn

so i have this heli i had a problem with it before but i fixed it and now im on a different problem

so if i take the heli and go forward and i try turning while going forward the heli doesnt turn but if i turn while going backwards the heli turns fine

here is the script

Script
while wait(.1) do
	local lv=engine.CFrame.lookVector
	if up then
		if chg.y<30 then
			chg=chg+Vector3.new(0,2,0)
		end
	elseif dn then
		if chg.y>-30 then
			chg=chg+Vector3.new(0,-2,0)
		end
	elseif chg.magnitude>1 then
		chg=chg*0.9
	else
		chg=Vector3.new(0,1,0)
	end
	if w then
		if inc<max_speed then
			inc=inc+2
		end
		vel.velocity=chg+(engine.CFrame.lookVector+Vector3.new(0,0.3,0))*inc
		BodyGyro.cframe=CFrame.new(engine.Position,engine.Position+Vector3.new(lv.x,-0.3,lv.z))
	elseif s then
		if inc >-max_speed then
			inc=inc-2
		end
		vel.velocity=chg+(engine.CFrame.lookVector-Vector3.new(0,0.3,0))*inc
		BodyGyro.cframe=CFrame.new(engine.Position,engine.Position+Vector3.new(lv.x,0.3,lv.z))
	else
		inc=inc*0.9
		vel.velocity=chg+engine.CFrame.lookVector*inc+Vector3.new(0,2,0)
		BodyGyro.cframe=CFrame.new(engine.Position,engine.Position+Vector3.new(lv.x,0,lv.z))
	end
	if a then
		if rot<math.pi/8 then
			rot=rot+math.pi/20
		end
		BodyGyro.cframe=BodyGyro.cframe*CFrame.Angles(0,math.pi/10,rot)
	elseif d then
		if rot>-math.pi/8 then
			rot=rot-math.pi/20
		end
		BodyGyro.cframe=BodyGyro.cframe*CFrame.Angles(0,-math.pi/10,rot)
	else
		rot=0
	end
end

il show a vid in a minute

Can we see a video? It’s been 8 hours and I don’t see a video.

go forward
[speed of turning] <== ==> [speed of turning]
no turning

go backwards
[speed of turning]<== allowed ==>[speed of turning]

Have you tried without the rot and pi thingy?

if a then
		BodyGyro.cframe=BodyGyro.cframe*CFrame.Angles(*your prefered speed*)
elseif d then
		BodyGyro.cframe=BodyGyro.cframe*CFrame.Angles(*again, your prefered speed*)
end