Fisher preconditioner works by removing a subtle divide by zero bug in the code, everything seems to work as well as I can hope