Odd rotation "lock"

I am trying to rotate a spaceship.  It works but seems to get "stuck" or locked breifly when pointing to the bottom of my screen.



........
      rotQ.fromAngleAxis(0.000001f, Vector3f.UNIT_Z);
      
      axis = new Vector3f[4];
   }
   
   @Override
   protected void simpleUpdate() {
      super.simpleUpdate();
      
      dust.update(cam.getLocation());
      
      if(KeyBindingManager.getKeyBindingManager().isValidCommand("left", true)){
         rotationVelocity.multLocal(rotQ);
      }
      if(KeyBindingManager.getKeyBindingManager().isValidCommand("right", true)){
         rotationVelocity.multLocal(rotQ.inverse());
      }
      if(KeyBindingManager.getKeyBindingManager().isValidCommand("up", true)){
         ship.getLocalRotation().toAxes(axis);
         velocity.addLocal(axis[1].mult(0.001f));
      }
      velocity.multLocal(0.95f);
      ship.setLocalTranslation(ship.getLocalTranslation().add(velocity));
      ship.getLocalRotation().multLocal(rotationVelocity);
      cam.setLocation(ship.getWorldTranslation().add(0, 0, 100));
   }



I am brand new to JME and pretty new to 3d graphics (not so new to coding).

When set into a rotation, the ship will rotate around freely, then as it gets close to looking down, it jumps/(skips a couple of degrees) so it is directly facing down, then after a little bit, "unlocks" and skips another few degrees..

I.E
160
161
162....
165...
170
171
180
180
180
180
180
180
189
190
191
192....

Would be the rotation in degrees as it passes the "locking" point.

I don't expect anyone to work out a solution, I was wondering if there was a easier way about updating and keeping a angular velocity?

Thanks in advance.

Regards,
Jordan.

While I'm at it, does anyone know how I would dampen the angular velocity? similar to the velocity.mult(0.95f)?  But for Quaternions?