diff --git a/src/encode.c b/src/encode.c
index e2dc9bb007485ceb8413bad6e57ec7037e13c52e..5ce5ee387e5d3d8e2a4799a6fea7d59d8b3c7e87 100644
--- a/src/encode.c
+++ b/src/encode.c
@@ -25,7 +25,7 @@
 #include "version.h"
 #include "bignum.h"
 
-RCSID("$Id: encode.c,v 1.83 2001/02/20 22:03:47 grubba Exp $");
+RCSID("$Id: encode.c,v 1.84 2001/02/21 13:46:13 grubba Exp $");
 
 /* #define ENCODE_DEBUG */
 
@@ -1034,16 +1034,20 @@ one_more_type:
 	low_decode_type(data);
       }
       push_type(T_MANY);
+      low_decode_type(data);
+      goto one_more_type;
 
     case T_MAPPING:
     case T_OR:
     case T_AND:
       push_type(tmp);
       low_decode_type(data);
+      goto one_more_type;
 
     case T_ARRAY:
     case T_MULTISET:
     case T_NOT:
+      push_type(tmp);
       goto one_more_type;
 
     case T_INT: