diff --git a/core/Integer.cc b/core/Integer.cc
index ae9d88a6662f76611954e563bdc13aebc1693966..88509c137bb7ef9ae12aed560bb9a9aef925502a 100644
--- a/core/Integer.cc
+++ b/core/Integer.cc
@@ -1800,7 +1800,11 @@ int INTEGER::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) c
     size_t len = 1;
     // No length restriction on integer
     if (p_td.oer->bytes == -1) {
-      ulong_val >>= 7;
+      if (p_td.oer->signed_) {
+        ulong_val >>= 7;
+      } else {
+        ulong_val >>= 8;
+      }
       while (ulong_val != 0) {
         len++;
         ulong_val >>= 8;