remove undefined behavior
diff --git a/skeletons/asn_bit_data.c b/skeletons/asn_bit_data.c
index 2852c2d..378496d 100644
--- a/skeletons/asn_bit_data.c
+++ b/skeletons/asn_bit_data.c
@@ -86,7 +86,7 @@
 	else if(off <= 24)
 		accum = ((buf[0] << 16) + (buf[1] << 8) + buf[2]) >> (24 - off);
 	else if(off <= 31)
-		accum = ((buf[0] << 24) + (buf[1] << 16)
+		accum = (((uint32_t)buf[0] << 24) + (buf[1] << 16)
 			+ (buf[2] << 8) + (buf[3])) >> (32 - off);
 	else if(nbits <= 31) {
 		asn_bit_data_t tpd = *pd;