According to srfi-18: ---------------------cut---------------------- Time objects and timeouts ...... a time object represents an absolute point in time an exact or inexact real number represents a relative time in seconds from the moment the primitive was called #f means that there is no timeout ---------------------end---------------------- Attached the patch to fix such a situation: ========== scheme@(guile-user)> (mutex-unlock! m condv #f) ERROR: In procedure unlock-mutex: ERROR: Wrong type (expecting real number): #f ========== And I do know that `mutex-unlock!' uses timeout as the last optional argument, usually users won't pass timeout when they don't need it. But I do think it's necessary to stick to the standard as possible as we can. Thanks!