diff --git a/lib/c/2014/labcomm2014_decoder.c b/lib/c/2014/labcomm2014_decoder.c
index 9ed6329ecd566b54423db6ba261ba63119251383..4935e4d4dbec5835cf2d93163fe4edb815e2b0f5 100644
--- a/lib/c/2014/labcomm2014_decoder.c
+++ b/lib/c/2014/labcomm2014_decoder.c
@@ -199,6 +199,12 @@ free_signature_signature:
   labcomm2014_memory_free(d->memory, 1,  signature.signature);
 free_signature_name:
   if (signature.name) {
+    if (result == -ENOENT) {
+      labcomm2014_error_warning(d->error,
+                                LABCOMM2014_ERROR_DEC_NO_REG_SIGNATURE,
+                                "Signature not found: %s\n",
+                                signature.name);
+    }
     labcomm2014_memory_free(d->memory, 0, signature.name);
   }
 out:
diff --git a/lib/c/2014/labcomm2014_error.c b/lib/c/2014/labcomm2014_error.c
index 9a29a76ef02a6e4152354e7b2ae7d6165c37a322..a002026d6df70a558dd2125683a14e1182a8b8ec 100644
--- a/lib/c/2014/labcomm2014_error.c
+++ b/lib/c/2014/labcomm2014_error.c
@@ -24,15 +24,21 @@
 #include <stdarg.h>
 #include "labcomm2014_error.h"
 
+static char *description[] = {
+#define LABCOMM2014_ERROR(name, description) description ,
+#include "labcomm2014_error.h"
+#undef LABCOMM2014_ERROR
+};
+
 void labcomm2014_error_fatal_global(enum labcomm2014_error error,
                                     char *format,
                                     ...)
 {
   va_list args;
 
-  fprintf(stderr, "Fatal error %d\n", error);
+  fprintf(stderr, "Fatal error %d (%s)\n", error, description[error]);
   va_start(args, format);
-  vprintf(format, args);
+  vfprintf(stderr, format, args);
   va_end(args);
 
   exit(1);
@@ -45,9 +51,9 @@ void labcomm2014_error_warning(struct labcomm2014_error_handler *e,
 {
   va_list args;
 
-  fprintf(stderr, "Fatal warning %d\n", error);
+  fprintf(stderr, "Fatal warning %d (%s)\n", error, description[error]);
   va_start(args, format);
-  vprintf(format, args);
+  vfprintf(stderr, format, args);
   va_end(args);
 
   exit(1);
diff --git a/lib/c/2014/labcomm2014_error.h b/lib/c/2014/labcomm2014_error.h
index 9162e63acb7795e0b054833ac98d60765dc95e94..ae6ae08203dc38f25aa27730c35cadd9e00b0ea6 100644
--- a/lib/c/2014/labcomm2014_error.h
+++ b/lib/c/2014/labcomm2014_error.h
@@ -52,6 +52,9 @@ LABCOMM2014_ERROR(LABCOMM2014_ERROR_ENC_NO_REG_SIGNATURE,
                   "Encoder has no registration for this signature")
 LABCOMM2014_ERROR(LABCOMM2014_ERROR_ENC_BUF_FULL,
                   "The labcomm2014 buffer is full")
+
+LABCOMM2014_ERROR(LABCOMM2014_ERROR_DEC_NO_REG_SIGNATURE,
+                  "Decoder has no registration for this signature")
 LABCOMM2014_ERROR(LABCOMM2014_ERROR_DEC_UNKNOWN_DATATYPE,
                   "Decoder: Unknown datatype")
 LABCOMM2014_ERROR(LABCOMM2014_ERROR_DEC_INDEX_MISMATCH,