Several optimisations to the speedo_pi, fix TZ handling as tzlocal() doesn't get the Olson timezone rule properly (only the current offset instead)