Index: tests/unified_locking/.expect/pthread_locks.txt
===================================================================
--- tests/unified_locking/.expect/pthread_locks.txt	(revision 1dbbef6589e7fa96c6a3e4dfdc0c68971d35cd60)
+++ tests/unified_locking/.expect/pthread_locks.txt	(revision 4e83bb73307a616bea9e819e1d7680a4fff893e1)
@@ -5,2 +5,4 @@
 Start Test 3: lock and condition variable multiple acquire and wait/notify
 Done Test 3
+Start Test 4: lock and condition variable single timed wait/notify
+Done Test 4
Index: tests/unified_locking/pthread_locks.cfa
===================================================================
--- tests/unified_locking/pthread_locks.cfa	(revision 1dbbef6589e7fa96c6a3e4dfdc0c68971d35cd60)
+++ tests/unified_locking/pthread_locks.cfa	(revision 4e83bb73307a616bea9e819e1d7680a4fff893e1)
@@ -3,9 +3,14 @@
 #include <stdlib.hfa>
 #include <thread.hfa>
+#include <time.h>
+#include <stdlib.hfa>
 
-const unsigned int num_times = 50000;
+const unsigned int num_times = 50;
 
 simple_owner_lock l;
 pthread_cond_var( simple_owner_lock ) c;
+
+owner_lock l2;
+condition_variable( owner_lock ) c2;
 
 volatile int counter = 0;
@@ -59,6 +64,23 @@
 }
 
+thread Wait_Time_Signal_1 {};
+
+void main( Wait_Time_Signal_1 & this ) {
+	for (unsigned int i = 0; i < num_times; i++) {
+		lock(l);
+		if(empty(c) || random(10) >= 9 ) {
+			timespec t;
+			clock_gettime(CLOCK_REALTIME, &t);
+			timespec waitTime{0,1};
+			bool woken = wait(c,l, t + waitTime);
+		}else{
+			notify_one(c);
+		}
+		unlock(l);
+	}
+}
+
 int main() {
-	processor p[3];
+	processor p[1];
 	printf("Start Test 1: lock and condition variable single wait/notify\n");
 	{
@@ -78,3 +100,9 @@
 	}
 	printf("Done Test 3\n");
+
+	printf("Start Test 4: lock and condition variable single timed wait/notify\n");
+	{
+		Wait_Time_Signal_1 t1[2];
+	}
+	printf("Done Test 4\n");
 }
