Index: libcfa/src/concurrency/alarm.cfa
===================================================================
--- libcfa/src/concurrency/alarm.cfa	(revision afd7fafbc24fcdf66cddb218210f54db0a58cd3d)
+++ libcfa/src/concurrency/alarm.cfa	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -55,4 +55,5 @@
 	this.period  = period;
 	this.thrd = thrd;
+	this.timeval = __kernel_get_time() + alarm;
 	set = false;
 	type = User;
@@ -63,11 +64,13 @@
 	this.period  = period;
 	this.proc = proc;
+	this.timeval = __kernel_get_time() + alarm;
 	set = false;
 	type = Kernel;
 }
 void ?{}( alarm_node_t & this, Alarm_Callback callback, Duration alarm, Duration period ) with( this ) {
+	this.callback = callback;
 	this.initial = alarm;
 	this.period  = period;
-	this.callback = callback;
+	this.timeval = __kernel_get_time() + alarm;
 	set = false;
 	type = Callback;
@@ -110,12 +113,10 @@
 	lock( event_kernel->lock __cfaabi_dbg_ctx2 );
 	{
-		Time curr = __kernel_get_time();
-		this->timeval = curr + this->initial;
-
 		/* paranoid */ verify( validate( alarms ) );
 
+		Time curr = __kernel_get_time();
 		__cfadbg_print_safe( preemption, " KERNEL: alarm inserting %p (%lu -> %lu).\n", this, curr.tn, this->timeval.tn );
 		insert( &alarms, this );
-		__kernel_set_timer( this->initial );
+		__kernel_set_timer( this->timeval - curr);
 		this->set = true;
 	}
Index: libcfa/src/concurrency/locks.cfa
===================================================================
--- libcfa/src/concurrency/locks.cfa	(revision afd7fafbc24fcdf66cddb218210f54db0a58cd3d)
+++ libcfa/src/concurrency/locks.cfa	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -188,5 +188,5 @@
 		alarm_node_t alarm_node;
 		condition_variable(L) * cond;
-		info_thread(L) * i;
+		info_thread(L) * info_thd;
 	};
 
@@ -194,5 +194,5 @@
 		this.alarm_node{ callback, alarm, period };
 		this.cond = c;
-		this.i = i;
+		this.info_thd = i;
 	}
 
@@ -206,15 +206,15 @@
 		// 	may still be called after a thread has been removed from the queue but
 		// 	before the alarm is unregistered
-		if ( listed(i) ) {	// is thread on queue
-			i->signalled = false;
+		if ( listed(info_thd) ) {	// is thread on queue
+			info_thd->signalled = false;
 			// remove this thread O(1)
-			remove( cond->blocked_threads, *i );
+			remove( cond->blocked_threads, *info_thd );
 			cond->count--;
-			if( i->lock ) {
+			if( info_thd->lock ) {
 				// call lock's on_notify if a lock was passed
-				on_notify(*i->lock, i->t);
+				on_notify(*info_thd->lock, info_thd->t);
 			} else {
 				// otherwise wake thread
-				unpark( i->t );
+				unpark( info_thd->t );
 			}
 		}
