diff --git a/core/Verdicttype.cc b/core/Verdicttype.cc
index 3d4c932f0bbce900e90ec58f2cb9cdd1a8752d20..6fafd130906f1f427faab801d2e10b72f20e4c92 100644
--- a/core/Verdicttype.cc
+++ b/core/Verdicttype.cc
@@ -238,7 +238,9 @@ void VERDICTTYPE::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf,
       TTCN_EncDec_ErrorContext::error_internal
         ("No TEXT descriptor available for type '%s'.", p_td.name);
     const unsigned char *b=p_buf.get_data();
+    int null_added=0;
     if(b[p_buf.get_len()-1]!='\0'){
+      null_added=1;
       p_buf.set_pos(p_buf.get_len());
       p_buf.put_zero(8,ORDER_LSB);
       p_buf.rewind();
@@ -248,6 +250,12 @@ void VERDICTTYPE::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf,
                "Can not decode type '%s', because invalid or incomplete"
                " message was received"
                , p_td.name);
+    if(null_added){
+      size_t actpos=p_buf.get_pos();
+      p_buf.set_pos(p_buf.get_len()-1);
+      p_buf.cut_end();
+      p_buf.set_pos(actpos);
+    }
     break;}
 #endif
   case TTCN_EncDec::CT_XER: {
diff --git a/core2/Basetype2.cc b/core2/Basetype2.cc
index 371e1dcc41f6a13c720983dfb238170be865214e..7037d71716d8f31e3a8e9e229091f3ee7240b189 100644
--- a/core2/Basetype2.cc
+++ b/core2/Basetype2.cc
@@ -3121,7 +3121,9 @@ void Record_Type::decode(const TTCN_Typedescriptor_t& p_td,
     if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal
                      ("No TEXT descriptor available for type '%s'.", p_td.name);
     const unsigned char *b=p_buf.get_data();
+    int null_added=0;
     if(b[p_buf.get_len()-1]!='\0'){
+      null_added=1;
       p_buf.set_pos(p_buf.get_len());
       p_buf.put_zero(8,ORDER_LSB);
       p_buf.rewind();
@@ -3130,6 +3132,12 @@ void Record_Type::decode(const TTCN_Typedescriptor_t& p_td,
       ec.error(TTCN_EncDec::ET_INCOMPL_MSG,
         "Can not decode type '%s', because invalid or incomplete"
         " message was received", p_td.name);
+    if(null_added){
+      size_t actpos=p_buf.get_pos();
+      p_buf.set_pos(p_buf.get_len()-1);
+      p_buf.cut_end();
+      p_buf.set_pos(actpos);
+    }
     break;}
   case TTCN_EncDec::CT_XER: {
     TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);
@@ -7316,7 +7324,9 @@ void Empty_Record_Type::decode(const TTCN_Typedescriptor_t& p_td,
     if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal
                      ("No TEXT descriptor available for type '%s'.", p_td.name);
     const unsigned char *b=p_buf.get_data();
+    int null_added=0;
     if(b[p_buf.get_len()-1]!='\0'){
+      null_added=1;
       p_buf.set_pos(p_buf.get_len());
       p_buf.put_zero(8,ORDER_LSB);
       p_buf.rewind();
@@ -7325,6 +7335,12 @@ void Empty_Record_Type::decode(const TTCN_Typedescriptor_t& p_td,
       ec.error(TTCN_EncDec::ET_INCOMPL_MSG,
         "Can not decode type '%s', because invalid or incomplete"
         " message was received", p_td.name);
+    if(null_added){
+      size_t actpos=p_buf.get_pos();
+      p_buf.set_pos(p_buf.get_len()-1);
+      p_buf.cut_end();
+      p_buf.set_pos(actpos);
+    }
     break;}
   case TTCN_EncDec::CT_XER: {
     TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name);