Oh Yeah! I wasn't thinking! I've used that many times for camera orientations! Good Work!

You can also create a camera that lags a bit in a similar way to SET CAMERA TO FOLLOW; again without math. Use CURVEANGLE:
sync on
sync rate 50
hide mouse
make matrix 1,500,500,25,25
make object sphere 1,20
position object 1,250,50,250
make object sphere 2,0.1
set text size 20
do
gosub camera
if spacekey()=1 then move object 1,2
if upkey()=1 then pitch object down 1,1
if downkey()=1 then pitch object up 1,1
if rightkey()=1 then turn object right 1,1
if leftkey()=1 then turn object left 1,1
center text 320,5,"Spacekey to move, Arrowkeys to turn."
sync
loop
camera:
position object 2,object position x(1),object position y(1),object position z(1)
set object to object orientation 2,1
move object 2,-100
pitch object up 2,90
move object 2,40
position camera object position x(2),object position y(2),object position z(2)
cangx#=camera angle x()
cangy#=camera angle y()
cangz#=camera angle z()
set camera to object orientation 1
newx#=camera angle x()
newy#=camera angle y()
newz#=camera angle z()
rotate camera cangx#,cangy#,cangz#
finalx#=curveangle(newx#,cangx#,10)
finaly#=curveangle(newy#,cangy#,10)
finalz#=curveangle(newz#,cangz#,10)
rotate camera finalx#,finaly#,finalz#
return
Enjoy your day.