diff --git a/libasn1fix/asn1fix_misc.c b/libasn1fix/asn1fix_misc.c
index 15a1686068475db7d862b7bbc1185cecb8e50cdd..b82afaee7d96829de622f872b9ec01779848f766 100644
--- a/libasn1fix/asn1fix_misc.c
+++ b/libasn1fix/asn1fix_misc.c
@@ -60,6 +60,22 @@ asn1f_printable_value(asn1p_value_t *v) {
 	case ATV_MAX: return "MAX";
 	case ATV_FALSE: return "FALSE";
 	case ATV_TRUE: return "TRUE";
+	case ATV_TUPLE:
+		ret = snprintf(buf, sizeof(buf), "{%d, %d}",
+			(int)(v->value.v_integer >> 4),
+			(int)(v->value.v_integer & 0xff));
+		if(ret >= (ssize_t)sizeof(buf))
+			memcpy(buf + sizeof(buf) - 4, "...", 4);
+		return buf;
+	case ATV_QUADRUPLE:
+		ret = snprintf(buf, sizeof(buf), "{%d, %d, %d, %d}",
+			(int)((v->value.v_integer >> 24) & 0xff),
+			(int)((v->value.v_integer >> 16) & 0xff),
+			(int)((v->value.v_integer >>  8) & 0xff),
+			(int)(v->value.v_integer & 0xff));
+		if(ret >= (ssize_t)sizeof(buf))
+			memcpy(buf + sizeof(buf) - 4, "...", 4);
+		return buf;
 	case ATV_STRING:
 	case ATV_UNPARSED:
 		/* Buffer is guaranteed to be null-terminated */