Index: src/libcfa/rational
===================================================================
--- src/libcfa/rational	(revision fbfde8435d0e43f43b9de0e5a9cd67aa994139a5)
+++ src/libcfa/rational	(revision d1ab5331896c37232a0f28b79dd7fa91637576b1)
@@ -12,6 +12,6 @@
 // Created On       : Wed Apr  6 17:56:25 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Apr  8 11:38:27 2016
-// Update Count     : 15
+// Last Modified On : Wed May  4 14:11:45 2016
+// Update Count     : 16
 // 
 
@@ -28,7 +28,7 @@
 
 // constructors
-Rational rational();
-Rational rational( long int n );
-Rational rational( long int n, long int d );
+void ?{}( Rational * r );
+void ?{}( Rational * r, long int n );
+void ?{}( Rational * r, long int n, long int d );
 
 // getter/setter for numerator/denominator
Index: src/libcfa/rational.c
===================================================================
--- src/libcfa/rational.c	(revision fbfde8435d0e43f43b9de0e5a9cd67aa994139a5)
+++ src/libcfa/rational.c	(revision d1ab5331896c37232a0f28b79dd7fa91637576b1)
@@ -11,6 +11,6 @@
 // Created On       : Wed Apr  6 17:54:28 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Apr 21 07:33:03 2016
-// Update Count     : 22
+// Last Modified On : Wed May  4 14:16:14 2016
+// Update Count     : 25
 // 
 
@@ -53,15 +53,16 @@
 // constructors
 
-Rational rational() {
-    return (Rational){ 0, 1 };
+void ?{}( Rational * r ) {
+    r{ 0, 1 };
 } // rational
 
-Rational rational( long int n ) {
-    return (Rational){ n, 1 };
+void ?{}( Rational * r, long int n ) {
+    r{ n, 1 };
 } // rational
 
-Rational rational( long int n, long int d ) {
+void ?{}( Rational * r, long int n, long int d ) {
     long int t = simplify( &n, &d );					// simplify
-    return (Rational){ n / t, d / t };
+    r->numerator = n / t;
+	r->denominator = d / t;
 } // rational
 
@@ -172,6 +173,5 @@
 Rational narrow( double f, long int md ) {
 	if ( md <= 1 ) {									// maximum fractional digits too small?
-		Rational t = rational( f, 1 );					// truncate fraction
-		return t;
+		return (Rational){ f, 1};						// truncate fraction
 	} // if
 
@@ -199,6 +199,5 @@
 		k[2] = x * k[1] + k[0]; k[0] = k[1]; k[1] = k[2];
 	} // for
-	Rational t = rational( neg ? -h[1] : h[1], k[1] );
-	return t;
+	return (Rational){ neg ? -h[1] : h[1], k[1] };
 } // narrow
 
