diff --git a/lib/c/labcomm_encoder.c b/lib/c/labcomm_encoder.c
index ff38dfed89fb691ddfa317288c0b60539363f4b5..f9125055274fed7fa03e37ac553cc470608117e7 100644
--- a/lib/c/labcomm_encoder.c
+++ b/lib/c/labcomm_encoder.c
@@ -216,7 +216,7 @@ free_encoder:
 #endif
 
 
-int labcomm_internal_encoder_register(
+static int labcomm_internal_encoder_reg_type(
   struct labcomm_encoder *e,
   struct labcomm_signature *signature,
   labcomm_encoder_function encode)
@@ -257,6 +257,18 @@ out:
   return result;
 }
 
+int labcomm_internal_encoder_register(
+  struct labcomm_encoder *e,
+  struct labcomm_signature *signature,
+  labcomm_encoder_function encode)
+{
+  if(e->context_type == LABCOMM_PRAGMA && e->context){
+	            e=((struct pragma_packet_builder *)e->context)->parent;
+		      }
+  return labcomm_internal_encoder_reg_type(
+		      e, signature, encode);
+}  
+
 int labcomm_internal_encode(
   struct labcomm_encoder *e,
   struct labcomm_signature *signature,