Ok, solved! I added one line of code: the first thing I do in fail() is call oref0-set-system-clock() to make the system time match the pump time. @scottleibrand , this is what you suggested, minus the grep: as far as I could tell that condition was not being met, so I just got rid of it. I can't think of any situations where one would not want the system time set to the pump time if NTP was not available (aka, offline looping), so I think this is the best set-up. It's definitely the most robust: people can set the time on their pump with its own interface, but if you're operating with no monitor, no internet, no battery, and no ssh-ing, now I (and any other luddites/people who need their rig to work in such rough conditions ) can just walk into any Starbucks with a rig that's unpowered and untethered, plug it into a USB port, and start looping.