diff --git a/lib/c/labcomm_decoder.c b/lib/c/labcomm_decoder.c
index 9a82859c2ba5046338f153118778eca52be2a30d..53a559b3333662ff66ca04015e9309c13ec52f1e 100644
--- a/lib/c/labcomm_decoder.c
+++ b/lib/c/labcomm_decoder.c
@@ -330,6 +330,9 @@ int labcomm_decoder_decode_one(struct labcomm_decoder *d)
     labcomm_scheduler_data_unlock(d->scheduler);
     if (do_decode) {
       do_decode(d->reader, call_handler, &wrap);
+      if (d->reader->error < 0) {
+	result = d->reader->error;
+      }
     } else {
       result = -ENOENT;
     }