I know a lot about this stuff.
First of all, use the sync commands. Place "sync on" at the beginning of your code. Also, put "sync rate 60". This will limit your program to 60 fps. Use whatever value you want. Using the sync commands will allow your program to run faster, and updates the screen only when you want to. This prevents the user from seeing the camera correct itself. Make sure to place the word "sync" right before your "loop" command. This way it will refresh the screen once per loop instead of every time something happens.
I re-wrote your code for you. I hope you appreciate it. Everything works now, press the two mouse buttons to move forward or backward. The Object now rotates correctly, and you can look with the mouse. I limited the up and down angle to +-30 but you can change it. I didn't even use the set camera to follow stuff. I don't like it. I hope you can understand it.
Good Luck, Xander
Xander - Bolt Software
"Make your words soft and tender, you may have to eat them tomorrow" -Anonymous