Index: libcfa/src/time.hfa
===================================================================
--- libcfa/src/time.hfa	(revision ffe2fad44a1e0e5936b3a5eb325178f2f44fcf5f)
+++ libcfa/src/time.hfa	(revision 4834563a32557006b543cc89466e014a64920922)
@@ -10,6 +10,6 @@
 // Created On       : Wed Mar 14 23:18:57 2018
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Sep 22 12:25:34 2018
-// Update Count     : 643
+// Last Modified On : Mon Jan  6 12:50:16 2020
+// Update Count     : 653
 //
 
@@ -32,39 +32,39 @@
 	Duration ?=?( Duration & dur, __attribute__((unused)) zero_t ) { return dur{ 0 }; }
 
-	Duration +?( Duration rhs ) with( rhs ) {	return (Duration)@{ +tv }; }
-	Duration ?+?( Duration & lhs, Duration rhs ) { return (Duration)@{ lhs.tv + rhs.tv }; }
+	Duration +?( Duration rhs ) with( rhs ) { return (Duration)@{ +tn }; }
+	Duration ?+?( Duration & lhs, Duration rhs ) { return (Duration)@{ lhs.tn + rhs.tn }; }
 	Duration ?+=?( Duration & lhs, Duration rhs ) { lhs = lhs + rhs; return lhs; }
 
-	Duration -?( Duration rhs ) with( rhs ) { return (Duration)@{ -tv }; }
-	Duration ?-?( Duration & lhs, Duration rhs ) { return (Duration)@{ lhs.tv - rhs.tv }; }
+	Duration -?( Duration rhs ) with( rhs ) { return (Duration)@{ -tn }; }
+	Duration ?-?( Duration & lhs, Duration rhs ) { return (Duration)@{ lhs.tn - rhs.tn }; }
 	Duration ?-=?( Duration & lhs, Duration rhs ) { lhs = lhs - rhs; return lhs; }
 
-	Duration ?*?( Duration lhs, int64_t rhs ) { return (Duration)@{ lhs.tv * rhs }; }
-	Duration ?*?( int64_t lhs, Duration rhs ) { return (Duration)@{ lhs * rhs.tv }; }
+	Duration ?*?( Duration lhs, int64_t rhs ) { return (Duration)@{ lhs.tn * rhs }; }
+	Duration ?*?( int64_t lhs, Duration rhs ) { return (Duration)@{ lhs * rhs.tn }; }
 	Duration ?*=?( Duration & lhs, int64_t rhs ) { lhs = lhs * rhs; return lhs; }
 
-	int64_t ?/?( Duration lhs, Duration rhs ) { return lhs.tv / rhs.tv; }
-	Duration ?/?( Duration lhs, int64_t rhs ) { return (Duration)@{ lhs.tv / rhs }; }
+	int64_t ?/?( Duration lhs, Duration rhs ) { return lhs.tn / rhs.tn; }
+	Duration ?/?( Duration lhs, int64_t rhs ) { return (Duration)@{ lhs.tn / rhs }; }
 	Duration ?/=?( Duration & lhs, int64_t rhs ) { lhs = lhs / rhs; return lhs; }
-	double div( Duration lhs, Duration rhs ) { return (double)lhs.tv / (double)rhs.tv; }
-
-	Duration ?%?( Duration lhs, Duration rhs ) { return (Duration)@{ lhs.tv % rhs.tv }; }
+	double div( Duration lhs, Duration rhs ) { return (double)lhs.tn / (double)rhs.tn; }
+
+	Duration ?%?( Duration lhs, Duration rhs ) { return (Duration)@{ lhs.tn % rhs.tn }; }
 	Duration ?%=?( Duration & lhs, Duration rhs ) { lhs = lhs % rhs; return lhs; }
 
-	bool ?==?( Duration lhs, Duration rhs ) { return lhs.tv == rhs.tv; }
-	bool ?!=?( Duration lhs, Duration rhs ) { return lhs.tv != rhs.tv; }
-	bool ?<? ( Duration lhs, Duration rhs ) { return lhs.tv <  rhs.tv; }
-	bool ?<=?( Duration lhs, Duration rhs ) { return lhs.tv <= rhs.tv; }
-	bool ?>? ( Duration lhs, Duration rhs ) { return lhs.tv >  rhs.tv; }
-	bool ?>=?( Duration lhs, Duration rhs ) { return lhs.tv >= rhs.tv; }
-
-	bool ?==?( Duration lhs, __attribute__((unused)) zero_t ) { return lhs.tv == 0; }
-	bool ?!=?( Duration lhs, __attribute__((unused)) zero_t ) { return lhs.tv != 0; }
-	bool ?<? ( Duration lhs, __attribute__((unused)) zero_t ) { return lhs.tv <  0; }
-	bool ?<=?( Duration lhs, __attribute__((unused)) zero_t ) { return lhs.tv <= 0; }
-	bool ?>? ( Duration lhs, __attribute__((unused)) zero_t ) { return lhs.tv >  0; }
-	bool ?>=?( Duration lhs, __attribute__((unused)) zero_t ) { return lhs.tv >= 0; }
-
-	Duration abs( Duration rhs ) { return rhs.tv >= 0 ? rhs : -rhs; }
+	bool ?==?( Duration lhs, Duration rhs ) { return lhs.tn == rhs.tn; }
+	bool ?!=?( Duration lhs, Duration rhs ) { return lhs.tn != rhs.tn; }
+	bool ?<? ( Duration lhs, Duration rhs ) { return lhs.tn <  rhs.tn; }
+	bool ?<=?( Duration lhs, Duration rhs ) { return lhs.tn <= rhs.tn; }
+	bool ?>? ( Duration lhs, Duration rhs ) { return lhs.tn >  rhs.tn; }
+	bool ?>=?( Duration lhs, Duration rhs ) { return lhs.tn >= rhs.tn; }
+
+	bool ?==?( Duration lhs, __attribute__((unused)) zero_t ) { return lhs.tn == 0; }
+	bool ?!=?( Duration lhs, __attribute__((unused)) zero_t ) { return lhs.tn != 0; }
+	bool ?<? ( Duration lhs, __attribute__((unused)) zero_t ) { return lhs.tn <  0; }
+	bool ?<=?( Duration lhs, __attribute__((unused)) zero_t ) { return lhs.tn <= 0; }
+	bool ?>? ( Duration lhs, __attribute__((unused)) zero_t ) { return lhs.tn >  0; }
+	bool ?>=?( Duration lhs, __attribute__((unused)) zero_t ) { return lhs.tn >= 0; }
+
+	Duration abs( Duration rhs ) { return rhs.tn >= 0 ? rhs : -rhs; }
 
 	Duration ?`ns( int64_t nsec ) { return (Duration)@{ nsec }; }
@@ -82,15 +82,15 @@
 	Duration ?`w( double weeks ) { return (Duration)@{ weeks * (7LL * 24LL * 60LL * 60LL * TIMEGRAN) }; }
 
-	int64_t ?`ns( Duration dur ) { return dur.tv; }
-	int64_t ?`us( Duration dur ) { return dur.tv / (TIMEGRAN / 1_000_000LL); }
-	int64_t ?`ms( Duration dur ) { return dur.tv / (TIMEGRAN / 1_000LL); }
-	int64_t ?`s( Duration dur ) { return dur.tv / TIMEGRAN; }
-	int64_t ?`m( Duration dur ) { return dur.tv / (60LL * TIMEGRAN); }
-	int64_t ?`h( Duration dur ) { return dur.tv / (60LL * 60LL * TIMEGRAN); }
-	int64_t ?`d( Duration dur ) { return dur.tv / (24LL * 60LL * 60LL * TIMEGRAN); }
-	int64_t ?`w( Duration dur ) { return dur.tv / (7LL * 24LL * 60LL * 60LL * TIMEGRAN); }
-
-	Duration max( Duration lhs, Duration rhs ) { return  (lhs.tv < rhs.tv) ? rhs : lhs;}
-	Duration min( Duration lhs, Duration rhs ) { return !(rhs.tv < lhs.tv) ? lhs : rhs;}
+	int64_t ?`ns( Duration dur ) { return dur.tn; }
+	int64_t ?`us( Duration dur ) { return dur.tn / (TIMEGRAN / 1_000_000LL); }
+	int64_t ?`ms( Duration dur ) { return dur.tn / (TIMEGRAN / 1_000LL); }
+	int64_t ?`s( Duration dur ) { return dur.tn / TIMEGRAN; }
+	int64_t ?`m( Duration dur ) { return dur.tn / (60LL * TIMEGRAN); }
+	int64_t ?`h( Duration dur ) { return dur.tn / (60LL * 60LL * TIMEGRAN); }
+	int64_t ?`d( Duration dur ) { return dur.tn / (24LL * 60LL * 60LL * TIMEGRAN); }
+	int64_t ?`w( Duration dur ) { return dur.tn / (7LL * 24LL * 60LL * 60LL * TIMEGRAN); }
+
+	Duration max( Duration lhs, Duration rhs ) { return  (lhs.tn < rhs.tn) ? rhs : lhs;}
+	Duration min( Duration lhs, Duration rhs ) { return !(rhs.tn < lhs.tn) ? lhs : rhs;}
 } // distribution
 
@@ -143,33 +143,35 @@
 //######################### Time #########################
 
-void ?{}( Time & time, int year, int month = 0, int day = 0, int hour = 0, int min = 0, int sec = 0, int nsec = 0 );
+void ?{}( Time & time, int year, int month = 1, int day = 1, int hour = 0, int min = 0, int sec = 0, int64_t nsec = 0 );
 static inline {
 	Time ?=?( Time & time, __attribute__((unused)) zero_t ) { return time{ 0 }; }
 
-	void ?{}( Time & time, timeval t ) with( time ) { tv = (int64_t)t.tv_sec * TIMEGRAN + t.tv_usec * 1000; }
+	void ?{}( Time & time, timeval t ) with( time ) { tn = (int64_t)t.tv_sec * TIMEGRAN + t.tv_usec * 1000; }
 	Time ?=?( Time & time, timeval t ) with( time ) {
-		tv = (int64_t)t.tv_sec * TIMEGRAN + t.tv_usec * (TIMEGRAN / 1_000_000LL);
+		tn = (int64_t)t.tv_sec * TIMEGRAN + t.tv_usec * (TIMEGRAN / 1_000_000LL);
 		return time;
 	} // ?=?
 
-	void ?{}( Time & time, timespec t ) with( time ) { tv = (int64_t)t.tv_sec * TIMEGRAN + t.tv_nsec; }
+	void ?{}( Time & time, timespec t ) with( time ) { tn = (int64_t)t.tv_sec * TIMEGRAN + t.tv_nsec; }
 	Time ?=?( Time & time, timespec t ) with( time ) {
-		tv = (int64_t)t.tv_sec * TIMEGRAN + t.tv_nsec;
+		tn = (int64_t)t.tv_sec * TIMEGRAN + t.tv_nsec;
 		return time;
 	} // ?=?
 
-	Time ?+?( Time & lhs, Duration rhs ) { return (Time)@{ lhs.tv + rhs.tv }; }
+	Time ?+?( Time & lhs, Duration rhs ) { return (Time)@{ lhs.tn + rhs.tn }; }
 	Time ?+?( Duration lhs, Time rhs ) { return rhs + lhs; }
 	Time ?+=?( Time & lhs, Duration rhs ) { lhs = lhs + rhs; return lhs; }
 
-	Duration ?-?( Time lhs, Time rhs ) { return (Duration)@{ lhs.tv - rhs.tv }; }
-	Time ?-?( Time lhs, Duration rhs ) { return (Time)@{ lhs.tv - rhs.tv }; }
+	Duration ?-?( Time lhs, Time rhs ) { return (Duration)@{ lhs.tn - rhs.tn }; }
+	Time ?-?( Time lhs, Duration rhs ) { return (Time)@{ lhs.tn - rhs.tn }; }
 	Time ?-=?( Time & lhs, Duration rhs ) { lhs = lhs - rhs; return lhs; }
-	bool ?==?( Time lhs, Time rhs ) { return lhs.tv == rhs.tv; }
-	bool ?!=?( Time lhs, Time rhs ) { return lhs.tv != rhs.tv; }
-	bool ?<?( Time lhs, Time rhs ) { return lhs.tv < rhs.tv; }
-	bool ?<=?( Time lhs, Time rhs ) { return lhs.tv <= rhs.tv; }
-	bool ?>?( Time lhs, Time rhs ) { return lhs.tv > rhs.tv; }
-	bool ?>=?( Time lhs, Time rhs ) { return lhs.tv >= rhs.tv; }
+	bool ?==?( Time lhs, Time rhs ) { return lhs.tn == rhs.tn; }
+	bool ?!=?( Time lhs, Time rhs ) { return lhs.tn != rhs.tn; }
+	bool ?<?( Time lhs, Time rhs ) { return lhs.tn < rhs.tn; }
+	bool ?<=?( Time lhs, Time rhs ) { return lhs.tn <= rhs.tn; }
+	bool ?>?( Time lhs, Time rhs ) { return lhs.tn > rhs.tn; }
+	bool ?>=?( Time lhs, Time rhs ) { return lhs.tn >= rhs.tn; }
+
+	int64_t ?`ns( Time t ) { return t.tn; }
 } // distribution
 
@@ -194,6 +196,6 @@
 
 static inline void ?{}( timeval & t, Time time ) with( t, time ) {
-	tv_sec = tv / TIMEGRAN;								// seconds
-	tv_usec = tv % TIMEGRAN / (TIMEGRAN / 1_000_000LL);	// microseconds
+	tv_sec = tn / TIMEGRAN;								// seconds
+	tv_usec = tn % TIMEGRAN / (TIMEGRAN / 1_000_000LL);	// microseconds
 } // ?{}
 
@@ -201,6 +203,6 @@
 
 static inline void ?{}( timespec & t, Time time ) with( t, time ) {
-	tv_sec = tv / TIMEGRAN;								// seconds
-	tv_nsec = tv % TIMEGRAN;							// nanoseconds
+	tv_sec = tn / TIMEGRAN;								// seconds
+	tv_nsec = tn % TIMEGRAN;							// nanoseconds
 } // ?{}
 
