better pretty-printing;

diff --git a/libasn1print/asn1print.c b/libasn1print/asn1print.c
index a07a894..e8281df 100644
--- a/libasn1print/asn1print.c
+++ b/libasn1print/asn1print.c
@@ -100,9 +100,11 @@
 		} else if(ac) printf(" ");
 
 		if(oid->arcs[ac].name) {
-			printf("%s(%d)",
-				oid->arcs[ac].name,
-				(int)oid->arcs[ac].number);
+			printf("%s", oid->arcs[ac].name);
+			if(oid->arcs[ac].number >= 0) {
+				printf("(%lld)",
+					(long long)oid->arcs[ac].number);
+			}
 			accum += strlen(oid->arcs[ac].name);
 		} else {
 			printf("%d",
@@ -289,7 +291,7 @@
 		{
 			char *symtable[] = { " EXCEPT ", " ^ ", " | ", ",",
 					"", "(" };
-			int i;
+			unsigned int i;
 			for(i = 0; i < ct->el_count; i++) {
 				enum asn1print_flags nflags = flags;
 				if(i) fputs(symtable[symno], stdout);
@@ -562,13 +564,14 @@
 
 	if(tc->meta_type == AMT_VALUE
 	&& tc->expr_type != A1TC_EXTENSIBLE) {
-		if(tc->expr_type == A1TC_UNIVERVAL)
+		if(tc->expr_type == A1TC_UNIVERVAL) {
 			printf("(");
-		else
-			printf(" ::= ");
-		asn1print_value(tc->value, flags);
-		if(tc->expr_type == A1TC_UNIVERVAL)
+			asn1print_value(tc->value, flags);
 			printf(")");
+		} else {
+			printf(" ::= ");
+			asn1print_value(tc->value, flags);
+		}
 	}
 
 	/*