diff --git a/lib/c/labcomm_decoder.c b/lib/c/labcomm_decoder.c
index d5613be8d21ef2d387add71b4fcfd9c132025fc5..c6ae216f698d296f16c7ccee1e55188f466131ab 100644
--- a/lib/c/labcomm_decoder.c
+++ b/lib/c/labcomm_decoder.c
@@ -230,7 +230,7 @@ out:
   return result;
 }
 
-static int decoder_skip(struct labcomm_decoder *d, int len)
+static int decoder_skip(struct labcomm_decoder *d, int len, int tag)
 {
   int i;
   printf("skipping %d bytes\n", len);
@@ -240,7 +240,7 @@ static int decoder_skip(struct labcomm_decoder *d, int len)
       return d->reader->error;
     }
   }
-  return 0;
+  return tag;
 }
 static int decode_pragma(struct labcomm_decoder *d, int len)
 {
@@ -280,7 +280,7 @@ static int decode_pragma(struct labcomm_decoder *d, int len)
      internal_labcomm_decoder_free(pd);
      result = 0;
    } else {
-     result = decoder_skip(d, psize);
+     result = decoder_skip(d, psize, LABCOMM_PRAGMA);
    }
 out:
   return result;
@@ -311,8 +311,9 @@ int labcomm_decoder_decode_one(struct labcomm_decoder *d)
   } else if (remote_index == LABCOMM_PRAGMA ){
     result = decode_pragma(d, length);
   } else if (remote_index < LABCOMM_USER) {
-    fprintf(stderr, "SKIP %d %d\n", remote_index, length);
-    result = remote_index;
+    //fprintf(stderr, "SKIP %d %d\n", remote_index, length);
+    //result = remote_index;
+    result = decoder_skip(d, length, remote_index);
   } else {
     int *local_index;
     struct call_handler_context wrap = {