--- packet-dmp.c	2007-07-06 05:25:00.000000000 +1000
+++ packet-dmp-new.c	2007-07-24 11:27:07.945591600 +1000
@@ -955,7 +955,7 @@
 	gboolean failure = FALSE;
 	gdouble  multiplier;
 	guint8   i;
-	gint     p;
+	gint64   p;
 
 	if (no_char >= MAX_SIC_LEN) {
 		/* Illegal length */
@@ -970,7 +970,7 @@
 	}
 
 	for (i = 0; i < no_char; i++) {
-		p = (gint) pow (multiplier, no_char - 1 - i);
+		p = (gint64) pow (multiplier, no_char - 1 - i);
 		sic[i] = (gchar) (bin / p);
 		bin -= sic[i] * p;
 		if (sic[i] <= 9) {
@@ -1173,7 +1173,7 @@
 					if ((key & 0xE0) == 0xC0) {        /* bit 7-4: 110x */
 						length = 4;
 						bytes = 3;
-						value = (tvb_get_ntohl (tvb, offset) >> 8) & 0x1FF;
+						value = (tvb_get_ntohl (tvb, offset) >> 8) & 0x1FFFFF;
 					} else if ((key & 0xF0) == 0xA0) { /* bit 7-4: 1010 */
 						length = 5;
 						bytes = 4;
