Some extra changes to your PR

I was trying to get negative step sizes to work everywhere.  There are still some issues, but I have fixed a lot of things.  I'll keep trying to work on this tomorrow.