Index: libcfa/src/concurrency/kernel.cfa
===================================================================
--- libcfa/src/concurrency/kernel.cfa	(revision 0989e79b79bf35a2196ae94a8b70c59073cb24eb)
+++ libcfa/src/concurrency/kernel.cfa	(revision 1b033b8dcae52f8f64c20a0c7e0428f00fd90de9)
@@ -742,5 +742,10 @@
 
 	void print_stats_now( cluster & this, int flags ) {
-		__print_stats( this.stats, this.print_stats, true, this.name, (void*)&this );
+		__print_stats( this.stats, this.print_stats, "Cluster", this.name, (void*)&this );
+	}
+
+	extern int __print_alarm_stats;
+	void print_alarm_stats() {
+		__print_alarm_stats = -1;
 	}
 #endif
Index: libcfa/src/concurrency/kernel/startup.cfa
===================================================================
--- libcfa/src/concurrency/kernel/startup.cfa	(revision 0989e79b79bf35a2196ae94a8b70c59073cb24eb)
+++ libcfa/src/concurrency/kernel/startup.cfa	(revision 1b033b8dcae52f8f64c20a0c7e0428f00fd90de9)
@@ -360,5 +360,5 @@
 		__tally_stats(proc->cltr->stats, &local_stats);
 		if( 0 != proc->print_stats ) {
-			__print_stats( &local_stats, proc->print_stats, true, proc->name, (void*)proc );
+			__print_stats( &local_stats, proc->print_stats, "Processor ", proc->name, (void*)proc );
 		}
 	#endif
@@ -622,5 +622,5 @@
 	#if !defined(__CFA_NO_STATISTICS__)
 		if( 0 != this.print_stats ) {
-			__print_stats( this.stats, this.print_stats, true, this.name, (void*)&this );
+			__print_stats( this.stats, this.print_stats, "Cluster", this.name, (void*)&this );
 		}
 		free( this.stats );
Index: libcfa/src/concurrency/preemption.cfa
===================================================================
--- libcfa/src/concurrency/preemption.cfa	(revision 0989e79b79bf35a2196ae94a8b70c59073cb24eb)
+++ libcfa/src/concurrency/preemption.cfa	(revision 1b033b8dcae52f8f64c20a0c7e0428f00fd90de9)
@@ -393,7 +393,4 @@
 // reserved for future use
 static void timeout( $thread * this ) {
-	#if !defined( __CFA_NO_STATISTICS__ )
-		kernelTLS().this_stats = this->curr_cluster->stats;
-	#endif
 	unpark( this );
 }
@@ -610,4 +607,8 @@
 }
 
+#if !defined(__CFA_NO_STATISTICS__)
+	int __print_alarm_stats = 0;
+#endif
+
 // Main of the alarm thread
 // Waits on SIGALRM and send SIGUSR1 to whom ever needs it
@@ -617,4 +618,10 @@
 	id.id = doregister(&id);
 	__cfaabi_tls.this_proc_id = &id;
+
+	#if !defined(__CFA_NO_STATISTICS__)
+		struct __stats_t local_stats;
+		__cfaabi_tls.this_stats = &local_stats;
+		__init_stats( &local_stats );
+	#endif
 
 	// Block sigalrms to control when they arrive
@@ -676,4 +683,10 @@
 	__cfaabi_dbg_print_safe( "Kernel : Preemption thread stopping\n" );
 	unregister(&id);
+
+	#if !defined(__CFA_NO_STATISTICS__)
+		if( 0 != __print_alarm_stats ) {
+			__print_stats( &local_stats, __print_alarm_stats, "Alarm", "Thread", 0p );
+		}
+	#endif
 	return 0p;
 }
Index: libcfa/src/concurrency/stats.cfa
===================================================================
--- libcfa/src/concurrency/stats.cfa	(revision 0989e79b79bf35a2196ae94a8b70c59073cb24eb)
+++ libcfa/src/concurrency/stats.cfa	(revision 1b033b8dcae52f8f64c20a0c7e0428f00fd90de9)
@@ -79,5 +79,5 @@
 	}
 
-	void __print_stats( struct __stats_t * stats, int flags, bool cluster, const char * name, void * id ) with( *stats ) {
+	void __print_stats( struct __stats_t * stats, int flags, const char * type, const char * name, void * id ) with( *stats ) {
 
 		if( flags & CFA_STATS_READY_Q ) {
@@ -109,5 +109,5 @@
 				"-- wake on exit          : %'15" PRIu64 "\n"
 				"\n"
-				, cluster ? "Cluster" : "Processor",  name, id
+				, type, name, id
 				, ready.pick.pop.success
 				, ready.pick.push.success
Index: libcfa/src/concurrency/stats.hfa
===================================================================
--- libcfa/src/concurrency/stats.hfa	(revision 0989e79b79bf35a2196ae94a8b70c59073cb24eb)
+++ libcfa/src/concurrency/stats.hfa	(revision 1b033b8dcae52f8f64c20a0c7e0428f00fd90de9)
@@ -7,5 +7,5 @@
 	static inline void __init_stats( struct __stats_t * ) {}
 	static inline void __tally_stats( struct __stats_t *, struct __stats_t * ) {}
-	static inline void __print_stats( struct __stats_t *, int, bool, const char *, void * ) {}
+	static inline void __print_stats( struct __stats_t *, int, const char *, const char *, void * ) {}
 #else
 	enum {
@@ -106,5 +106,5 @@
 	void __init_stats ( struct __stats_t * );
 	void __tally_stats( struct __stats_t *, struct __stats_t * );
-	void __print_stats( struct __stats_t *, int, bool, const char *, void * );
+	void __print_stats( struct __stats_t *, int, const char *, const char *, void * );
 #endif
 
