The general problem is that there is a lot of variation in the sensitivity of analogue controllers, sometimes causing the problem you've reported - the axis' not resetting correctly all the way to zero when released. I have that problem on several controllers of my own.
There was a new command introduced in 7.4 that allows you to control the sensitivity of the 'digital' joystick function - SET JOYSTICK DEADZONE
The following code is from the help for that command:
sync on
sync rate 60
ZoneSize = 0
do
cls
if inkey$() = "+" and ZoneSize < 100 then inc ZoneSize
if inkey$() = "-" and ZoneSize > 0 then dec ZoneSize
set joystick deadzone ZoneSize
print "Joystick deadzone is at "; ZoneSize; "%"
print
if joystick up() = 1 then print "Joystick up"
if joystick down() = 1 then print "Joystick down"
if joystick left() = 1 then print "Joystick left"
if joystick right() = 1 then print "Joystick right"
sync
loop
I find that setting the deadzone to 5% fixes my problems with it, but your controller may be different.
Give the command a try and see if it fixes things for you.