diff --git a/skeletons/tests/check-REAL.c b/skeletons/tests/check-REAL.c
index f3aff9c..46b1a95 100644
--- a/skeletons/tests/check-REAL.c
+++ b/skeletons/tests/check-REAL.c
@@ -22,33 +22,40 @@
 	return 0;
 }
 
+static char *
+d2s(double d, int canonical, const char *str) {
+	ssize_t s;
+
+	reconstr_lens[canonical] = 0;
+	s = REAL__dump(d, canonical, callback, (void *)(ptrdiff_t)canonical);
+	assert(s < sizeof(reconstructed[canonical]));
+	assert(s == reconstr_lens[canonical]);
+	reconstructed[canonical][s] = '\0';	// ASCIIZ
+	return reconstructed[canonical];
+}
+
+/*
+ * Verify that a string representation of a given floating point value
+ * is as given in the (sample) and (canonical_sample) arguments.
+ */
 static void
 check_str_repr(double d, const char *sample, const char *canonical_sample) {
-	ssize_t s1, s2;
+	char *s0, *s1;
 
-	reconstr_lens[1] = reconstr_lens[0] = 0;
-
-	s1 = REAL__dump(d, 0, callback, 0);
-	assert(s1 < sizeof(reconstructed[0]));
-	assert(s1 == reconstr_lens[0]);
-	reconstructed[0][s1] = '\0';
-
-	s2 = REAL__dump(d, 1, callback, (void *)1);
-	assert(s2 < sizeof(reconstructed[1]));
-	assert(s2 == reconstr_lens[1]);
-	reconstructed[1][s2] = '\0';
+	s0 = d2s(d, 0, sample);
+	s1 = d2s(d, 1, canonical_sample);
 
 	if(sample) {
 		printf("Checking %f->[%s] against [%s]%s\n",
-			d, reconstructed[0], sample,
+			d, s0, sample,
 			canonical_sample ? " (canonical follows...)" : ""
 		);
-		assert(!strcmp(reconstructed[0], sample));
+		assert(!strcmp(s0, sample));
 	}
 	if(canonical_sample) {
 		printf("Checking %f->[%s] against [%s] (canonical)\n",
-			d, reconstructed[1], canonical_sample);
-		assert(!strcmp(reconstructed[1], canonical_sample));
+			d, s1, canonical_sample);
+		assert(!strcmp(s1, canonical_sample));
 	}
 }
 
