diff --git a/skeletons/ber_tlv_tag.c b/skeletons/ber_tlv_tag.c
index f7df191..d7630c4 100644
--- a/skeletons/ber_tlv_tag.c
+++ b/skeletons/ber_tlv_tag.c
@@ -17,7 +17,7 @@
 
 	val = *(uint8_t *)ptr;
 	tclass = (val >> 6);
-	if((val &= 31) != 31) {
+	if((val &= 0x1F) != 0x1F) {
 		/*
 		 * Simple form: everything encoded in a single octet.
 		 * Tag Class is encoded using two least significant bits.
@@ -31,8 +31,8 @@
 	 * The MSB is 0 if it is the last octet of the tag.
 	 */
 	for(val = 0, ((char *)ptr)++, skipped = 2;
-			skipped < size; ((char *)ptr)++, skipped++) {
-		unsigned oct = *(uint8_t *)ptr;
+			skipped <= size; ((char *)ptr)++, skipped++) {
+		unsigned int oct = *(uint8_t *)ptr;
 		if(oct & 0x80) {
 			val = (val << 7) | (oct & 0x7F);
 			/*
@@ -47,7 +47,8 @@
 				return -1;
 			}
 		} else {
-			*tag_r = (val << 9) | (oct << 2) | tclass;
+			val = (val << 7) | oct;
+			*tag_r = (val << 2) | tclass;
 			return skipped;
 		}
 	}
@@ -105,7 +106,7 @@
 	uint8_t *buf = (uint8_t *)bufp;
 	uint8_t *end;
 	size_t required_size;
-	int i;
+	size_t i;
 
 	if(tval <= 30) {
 		/* Encoded in 1 octet */
@@ -119,8 +120,8 @@
 	/*
 	 * Compute the size of the subsequent bytes.
 	 */
-	for(required_size = 1, i = 7; i < 8 * sizeof(tag); i += 7) {
-		if(tag >> i)
+	for(required_size = 1, i = 7; i < 8 * sizeof(tval); i += 7) {
+		if(tval >> i)
 			required_size++;
 		else
 			break;
@@ -133,10 +134,9 @@
 	 * Fill in the buffer, space permitting.
 	 */
 	end = buf + required_size - 1;
-	for(i -= 7; buf <= end; i -= 7, buf++) {
+	for(i -= 7; buf < end; i -= 7, buf++)
 		*buf = 0x80 | ((tval >> i) & 0x7F);
-	}
-	*end &= 0x7F;	/* Clear the last high bit */
+	*buf = (tval & 0x7F);	/* Last octet without high bit */
 
 	return required_size + 1;
 }
