diff --git a/src/rtl_test.c b/src/rtl_test.c
index f5a56b8..c705e04 100644
--- a/src/rtl_test.c
+++ b/src/rtl_test.c
@@ -55,6 +55,8 @@ static int ppm_benchmark = 0;
 static int64_t ppm_count = 0L;
 static int64_t ppm_total = 0L;
 
+static uint32_t samp_rate = DEFAULT_SAMPLE_RATE;
+
 #ifndef _WIN32
 static struct timespec ppm_start;
 static struct timespec ppm_recent;
@@ -108,6 +110,7 @@ static void rtlsdr_callback(unsigned char *buf, uint32_t len, void *ctx)
 {
 	uint32_t i, lost = 0;
 	int64_t ns;
+	int real_rate;
 
 	if (uninit) {
 		bcnt = buf[0];
@@ -141,17 +144,23 @@ static void rtlsdr_callback(unsigned char *buf, uint32_t len, void *ctx)
 	if (ppm_now.tv_sec - ppm_recent.tv_sec > PPM_DURATION) {
 		ns = 1000000000L * (int64_t)(ppm_now.tv_sec - ppm_recent.tv_sec);
 		ns += (int64_t)(ppm_now.tv_nsec - ppm_recent.tv_nsec);
-		printf("real sample rate: %i\n",
+		printf("real sample rate: %i",
 		(int)((1000000000L * ppm_count / 2L) / ns));
-		#ifndef __APPLE__
-		clock_gettime(CLOCK_REALTIME, &ppm_recent);
-		#else
-		gettimeofday(&tv, NULL);
-		ppm_recent.tv_sec = tv.tv_sec;
-		ppm_recent.tv_nsec = tv.tv_usec*1000;
-		#endif
+
 		ppm_total += ppm_count / 2L;
 		ppm_count = 0L;
+
+		#ifndef _WIN32
+		ns = 1000000000L * (int64_t)(ppm_now.tv_sec - ppm_start.tv_sec);
+		ns += (int64_t)(ppm_now.tv_nsec - ppm_start.tv_nsec);
+		real_rate = (int)(ppm_total * 1000000000L / ns);
+		printf(" cumulative PPM error: %.1f\n",
+		(1000000.0 * (real_rate - (int)samp_rate)) / samp_rate);
+		#else
+		printf("\n");
+		#endif
+
+		ppm_recent = ppm_now;	
 	}
 #endif
 }
@@ -213,13 +222,10 @@ int main(int argc, char **argv)
 	int sync_mode = 0;
 	uint8_t *buffer;
 	uint32_t dev_index = 0;
-	uint32_t samp_rate = DEFAULT_SAMPLE_RATE;
 	uint32_t out_block_size = DEFAULT_BUF_LENGTH;
 	int device_count;
 	int count;
 	int gains[100];
-	int real_rate;
-	int64_t ns;
 
 	while ((opt = getopt(argc, argv, "d:s:b:tpS::")) != -1) {
 		switch (opt) {
@@ -365,15 +371,6 @@ int main(int argc, char **argv)
 
 	if (do_exit) {
 		fprintf(stderr, "\nUser cancel, exiting...\n");
-		if (ppm_benchmark) {
-#ifndef _WIN32
-			ns = 1000000000L * (int64_t)(ppm_recent.tv_sec - ppm_start.tv_sec);
-			ns += (int64_t)(ppm_recent.tv_nsec - ppm_start.tv_nsec);
-			real_rate = (int)(ppm_total * 1000000000L / ns);
-			printf("Cumulative PPM error: %i\n",
-			(int)round((double)(1000000 * (real_rate - (int)samp_rate)) / (double)samp_rate));
-#endif
-		}
 	}
 	else
 		fprintf(stderr, "\nLibrary error %d, exiting...\n", r);
