diff --git a/sys/kern/p1003_1b.c b/sys/kern/p1003_1b.c
index 7d312d7711db..26d3e66d0bda 100644
--- a/sys/kern/p1003_1b.c
+++ b/sys/kern/p1003_1b.c
@@ -306,6 +306,7 @@ int sched_rr_get_interval(struct thread *td,
 {
 	int e;
 	struct thread *targettd;
+	struct timespec timespec;
 	struct proc *targetp;
 
 	mtx_lock(&Giant);
@@ -326,7 +327,10 @@ int sched_rr_get_interval(struct thread *td,
 	PROC_UNLOCK(targetp);
 	if (e == 0) {
 		e = ksched_rr_get_interval(&td->td_retval[0], ksched, targettd,
-			uap->interval);
+			&timespec);
+		if (e == 0)
+			e = copyout(&timespec, uap->interval,
+			    sizeof(timespec));
 	}
 done2:
 	mtx_unlock(&Giant);
diff --git a/sys/posix4/p1003_1b.c b/sys/posix4/p1003_1b.c
index 7d312d7711db..26d3e66d0bda 100644
--- a/sys/posix4/p1003_1b.c
+++ b/sys/posix4/p1003_1b.c
@@ -306,6 +306,7 @@ int sched_rr_get_interval(struct thread *td,
 {
 	int e;
 	struct thread *targettd;
+	struct timespec timespec;
 	struct proc *targetp;
 
 	mtx_lock(&Giant);
@@ -326,7 +327,10 @@ int sched_rr_get_interval(struct thread *td,
 	PROC_UNLOCK(targetp);
 	if (e == 0) {
 		e = ksched_rr_get_interval(&td->td_retval[0], ksched, targettd,
-			uap->interval);
+			&timespec);
+		if (e == 0)
+			e = copyout(&timespec, uap->interval,
+			    sizeof(timespec));
 	}
 done2:
 	mtx_unlock(&Giant);