I agree with Marc and Shiro that there should not be a global procedure to get the current errno value. The dynamic duo of threads and signals will be sure to mess this one up -- plus the usual caveats about FFI. Each Scheme wrapper for a POSIX syscall should return the errno value after the call as a fixnum (where zero means "no error"). I can't see any other safe way to do it.