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 );
 			}
 		}
Index: libcfa/src/exception.c
===================================================================
--- libcfa/src/exception.c	(revision afd7fafbc24fcdf66cddb218210f54db0a58cd3d)
+++ libcfa/src/exception.c	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -48,5 +48,5 @@
 
 // Base Exception type id:
-struct __cfa__parent_vtable __cfatid_exception_t = {
+struct __cfavir_type_info __cfatid_exception_t = {
 	NULL,
 };
Index: libcfa/src/exception.h
===================================================================
--- libcfa/src/exception.h	(revision afd7fafbc24fcdf66cddb218210f54db0a58cd3d)
+++ libcfa/src/exception.h	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -29,7 +29,7 @@
 struct __cfaehm_base_exception_t;
 typedef struct __cfaehm_base_exception_t exception_t;
-struct __cfa__parent_vtable;
+struct __cfavir_type_info;
 struct __cfaehm_base_exception_t_vtable {
-	const struct __cfa__parent_vtable * __cfavir_typeid;
+	const struct __cfavir_type_info * __cfavir_typeid;
 	size_t size;
 	void (*copy)(struct __cfaehm_base_exception_t *this,
@@ -41,5 +41,5 @@
 	struct __cfaehm_base_exception_t_vtable const * virtual_table;
 };
-extern struct __cfa__parent_vtable __cfatid_exception_t;
+extern struct __cfavir_type_info __cfatid_exception_t;
 
 
Index: libcfa/src/exception.hfa
===================================================================
--- libcfa/src/exception.hfa	(revision afd7fafbc24fcdf66cddb218210f54db0a58cd3d)
+++ libcfa/src/exception.hfa	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -157,5 +157,5 @@
 #define _EHM_TYPE_ID_STRUCT(exception_name, forall_clause) \
 	forall_clause _EHM_TYPE_ID_TYPE(exception_name) { \
-		__cfa__parent_vtable const * parent; \
+		__cfavir_type_info const * parent; \
 	}
 
Index: libcfa/src/iostream.cfa
===================================================================
--- libcfa/src/iostream.cfa	(revision afd7fafbc24fcdf66cddb218210f54db0a58cd3d)
+++ libcfa/src/iostream.cfa	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Apr 27 18:01:03 2021
-// Update Count     : 1330
+// Last Modified On : Sat May 15 09:39:21 2021
+// Update Count     : 1342
 //
 
@@ -659,7 +659,8 @@
 			int exp10, len2; \
 			eng( f.val, f.pc, exp10 );					/* changes arguments */ \
+			/* printf( "%g %d %d %d %s\n", f.val, f.wd, f.pc, exp10, format ); */ \
 			if ( ! f.flags.left && f.wd > 1 ) { \
-				/* Exponent size (number of digits, 'e', optional minus sign) */ \
-				f.wd -= lrint( floor( log10( abs( exp10 ) ) ) ) + 1 + 1 + (exp10 < 0 ? 1 : 0); \
+				/* Exponent size: 'e', optional minus sign, number of digits: log10(0) => undefined */ \
+				f.wd -= 1 + (exp10 < 0 ? 1 : 0) + lrint( floor( exp10 == 0 ? 0 : log10( abs( exp10 ) ) ) ) + 1; \
 				if ( f.wd < 1 ) f.wd = 1; \
 			} /* if */ \
@@ -708,5 +709,5 @@
 		if ( ! f.flags.pc ) {							/* no precision */ \
 			fmtstr[sizeof(DFMTNP)-2] = f.base;			/* sizeof includes '\0' */ \
-			/* printf( "%g %d %s\n", f.val, f.wd, &fmtstr[star]); */ \
+			/* printf( "%g %d %s\n", f.val, f.wd, &fmtstr[star] ); */ \
 			PrintWithDP2( os, &fmtstr[star], f.wd, f.val ) \
 		} else {										/* precision */ \
Index: libcfa/src/virtual.c
===================================================================
--- libcfa/src/virtual.c	(revision afd7fafbc24fcdf66cddb218210f54db0a58cd3d)
+++ libcfa/src/virtual.c	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -10,6 +10,6 @@
 // Created On       : Tus Jul 11 15:10:00 2017
 // Last Modified By : Andrew Beach
-// Last Modified On : Wed Jul 26 14:24:00 2017
-// Update Count     : 1
+// Last Modified On : Mon May 17 11:01:00 2021
+// Update Count     : 2
 //
 
@@ -17,6 +17,7 @@
 #include "assert.h"
 
-int __cfa__is_parent( struct __cfa__parent_vtable const * parent,
-    	struct __cfa__parent_vtable const * child ) {
+int __cfavir_is_parent(
+		__cfavir_type_id parent,
+		__cfavir_type_id child ) {
 	assert( child );
 	do {
@@ -28,7 +29,8 @@
 }
 
-void * __cfa__virtual_cast( struct __cfa__parent_vtable const * parent,
-    	struct __cfa__parent_vtable const * const * child ) {
+void * __cfavir_virtual_cast(
+		__cfavir_type_id parent,
+		__cfavir_type_id const * child ) {
 	assert( child );
-	return (__cfa__is_parent(parent, *child)) ? (void *)child : (void *)0;
+	return (__cfavir_is_parent(parent, *child)) ? (void *)child : (void *)0;
 }
Index: libcfa/src/virtual.h
===================================================================
--- libcfa/src/virtual.h	(revision afd7fafbc24fcdf66cddb218210f54db0a58cd3d)
+++ libcfa/src/virtual.h	(revision 02a43ff7eedab4a40516ea7c03432d1537c2e92c)
@@ -10,6 +10,6 @@
 // Created On       : Tus Jul 11 15:08:00 2017
 // Last Modified By : Andrew Beach
-// Last Modified On : Wed Jul 26 14:18:00 2017
-// Update Count     : 1
+// Last Modified On : Mon May 17 11:03:00 2021
+// Update Count     : 2
 //
 
@@ -20,18 +20,24 @@
 #endif
 
-// All strict/explicate vtables should have this head, showing their parent.
-struct __cfa__parent_vtable {
-    struct __cfa__parent_vtable const * const parent;
+// Information on a type for the virtual system.
+// There should be exactly one instance per type and there should be a
+// pointer to it at the head of every virtual table.
+struct __cfavir_type_info {
+	// Type id of parent type, null if this is a root type.
+    struct __cfavir_type_info const * const parent;
 };
 
-// Takes in two non-null pointers to type_objects.
-int __cfa__is_parent( struct __cfa__parent_vtable const * parent,
-		struct __cfa__parent_vtable const * child );
+// A pointer to type information acts as the type id.
+typedef struct __cfavir_type_info const * __cfavir_type_id;
+
+// Takes in two non-null type ids.
+int __cfavir_is_parent(
+		__cfavir_type_id parent, __cfavir_type_id child );
 
 // If parent is a parent of child then return child, otherwise return NULL.
 // Input pointers are none-null, child's first level should be an object with
 // a vtable
-void * __cfa__virtual_cast( struct __cfa__parent_vtable const * parent,
-		struct __cfa__parent_vtable const * const * child );
+void * __cfavir_virtual_cast(
+		__cfavir_type_id parent, __cfavir_type_id const * child );
 
 #ifdef __cforall
