diff --git a/yarrow256.c b/yarrow256.c
index f9df914400a573097acf38b7ae452924ecdee704..bef0a9ee102f2f436e5b8ac17b328798aa1a4a50 100644
--- a/yarrow256.c
+++ b/yarrow256.c
@@ -28,6 +28,11 @@
 #include <assert.h>
 #include <string.h>
 
+/* #define YARROW_DEBUG */
+#ifdef YARROW_DEBUG
+#include <stdio.h>
+#endif
+
 /* Parameters */
 
 /* An upper limit on the entropy (in bits) in one octet of sample
@@ -102,6 +107,10 @@ yarrow_fast_reseed(struct yarrow256_ctx *ctx)
   uint8_t digest[SHA256_DIGEST_SIZE];
   unsigned i;
 
+#ifdef YARROW_DEBUG
+  fprintf(stderr, "yarrow_fast_reseed\n");
+#endif
+  
   /* We feed two block of output using the current key into the pool
    * before emptying it. */
   if (ctx->seeded)
@@ -134,6 +143,10 @@ yarrow_slow_reseed(struct yarrow256_ctx *ctx)
   uint8_t digest[SHA256_DIGEST_SIZE];
   unsigned i;
 
+#ifdef YARROW_DEBUG
+  fprintf(stderr, "yarrow_slow_reseed\n");
+#endif
+
   /* Get digest of the slow pool*/
   
   sha256_final(&ctx->pools[YARROW_SLOW]);
@@ -203,6 +216,13 @@ yarrow256_update(struct yarrow256_ctx *ctx,
     case YARROW_FAST:
       if (source->estimate[YARROW_FAST] >= YARROW_FAST_THRESHOLD)
 	yarrow_fast_reseed(ctx);
+
+#ifdef YARROW_DEBUG
+      fprintf(stderr,
+              "yarrow256_update: source_index = %d,\n"
+              "            fast pool estimate = %d\n",
+              source_index, source->estimate[YARROW_FAST]);
+#endif
       break;
     case YARROW_SLOW:
       {
@@ -214,6 +234,14 @@ yarrow256_update(struct yarrow256_ctx *ctx,
 	  if (ctx->sources[i].estimate[YARROW_SLOW] >= YARROW_SLOW_THRESHOLD)
 	    k++;
 
+#ifdef YARROW_DEBUG
+        fprintf(stderr,
+                "yarrow256_update:     source_index = %d,\n"
+                "                 slow pool estimate = %d,\n"
+                "  number of sources above threshold = %d\n",
+                source_index, source->estimate[YARROW_SLOW], k);
+#endif
+        
 	if (k >= YARROW_SLOW_K)
 	  {
 	    yarrow_slow_reseed(ctx);