avoid shifting negative value
diff --git a/skeletons/OBJECT_IDENTIFIER.c b/skeletons/OBJECT_IDENTIFIER.c
index 36882f9..d0f8b31 100644
--- a/skeletons/OBJECT_IDENTIFIER.c
+++ b/skeletons/OBJECT_IDENTIFIER.c
@@ -162,7 +162,7 @@
 	if(add) {
 		for(rvbuf -= inc; rvbuf != rvstart; rvbuf -= inc) {
 			int v = add + *rvbuf;
-			if(v & (-1 << CHAR_BIT)) {
+			if(v & ((unsigned)~0 << CHAR_BIT)) {
 				*rvbuf = (unsigned char)(v + (1 << CHAR_BIT));
 				add = -1;
 			} else {