different marker semantics

diff --git a/libasn1print/asn1print.c b/libasn1print/asn1print.c
index 41b2b71..31d7d14 100644
--- a/libasn1print/asn1print.c
+++ b/libasn1print/asn1print.c
@@ -533,9 +533,9 @@
 			 * Print the expression as it were a stand-alone type.
 			 */
 			asn1print_expr(asn, mod, se, flags, level + 4);
-			if(se->marker & EM_DEFAULT)
+			if((se->marker & EM_DEFAULT) == EM_DEFAULT)
 				printf(" DEFAULT <?>");
-			else if(se->marker & EM_OPTIONAL)
+			else if((se->marker & EM_OPTIONAL) == EM_OPTIONAL)
 				printf(" OPTIONAL");
 			if(TQ_NEXT(se, next)) {
 				printf(",");