if returning errno value directly from a syscall, we need to negate it.
diff --git a/src/thread/__timedwait.c b/src/thread/__timedwait.c
index b38ea99..28b777b 100644
--- a/src/thread/__timedwait.c
+++ b/src/thread/__timedwait.c
@@ -17,7 +17,7 @@
 		if (to.tv_sec < 0) return ETIMEDOUT;
 	}
 	if (priv) priv = 128; priv=0;
-	r = __syscall(__NR_futex, (long)addr, FUTEX_WAIT | priv, val, at ? (long)&to : 0);
+	r = -__syscall(__NR_futex, (long)addr, FUTEX_WAIT | priv, val, at ? (long)&to : 0);
 	if (r == ETIMEDOUT) return r;
 	return 0;
 }
diff --git a/src/thread/pthread_kill.c b/src/thread/pthread_kill.c
index 6448d97..17aa5c4 100644
--- a/src/thread/pthread_kill.c
+++ b/src/thread/pthread_kill.c
@@ -2,5 +2,5 @@
 
 int pthread_kill(pthread_t t, int sig)
 {
-	return __syscall(__NR_tgkill, t->pid, t->tid, sig);
+	return -__syscall(__NR_tgkill, t->pid, t->tid, sig);
 }
diff --git a/src/time/clock_nanosleep.c b/src/time/clock_nanosleep.c
index c777c17..721e794 100644
--- a/src/time/clock_nanosleep.c
+++ b/src/time/clock_nanosleep.c
@@ -6,7 +6,7 @@
 {
 	int ret;
 	CANCELPT_BEGIN;
-	ret = __syscall(__NR_clock_nanosleep, clk, flags, req, rem);
+	ret = -__syscall(__NR_clock_nanosleep, clk, flags, req, rem);
 	CANCELPT_END;
 	return ret;
 }