diff --git a/skeletons/INTEGER.c b/skeletons/INTEGER.c
index 38806db..18e820c 100644
--- a/skeletons/INTEGER.c
+++ b/skeletons/INTEGER.c
@@ -1193,7 +1193,7 @@
         assert(emap_len > 0);
         value = emap[asn_random_between(0, emap_len - 1)].nat_value;
     } else {
-        const asn_per_constraint_t *ct;
+        const asn_per_constraints_t *ct;
 
         static const long variants[] = {
             -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384,
@@ -1211,11 +1211,15 @@
         }
 
         if(!constraints) constraints = &td->encoding_constraints;
-        ct = constraints ? &constraints->per_constraints->value : 0;
-        (void)ct;
+        ct = constraints ? constraints->per_constraints : 0;
+        if(ct && (ct->value.flags & APC_CONSTRAINED)) {
+            if(value < ct->value.lower_bound || value > ct->value.upper_bound) {
+                value = asn_random_between(ct->value.lower_bound,
+                                           ct->value.upper_bound);
+            }
+        }
     }
 
-
     if(asn_imax2INTEGER(st, value)) {
         if(st == *sptr) {
             ASN_STRUCT_RESET(*td, st);
@@ -1224,6 +1228,7 @@
         }
         return result_failed;
     } else {
+        *sptr = st;
         result_ok.length = st->size;
         return result_ok;
     }
diff --git a/skeletons/NativeInteger.c b/skeletons/NativeInteger.c
index df385bd..05ecae0 100644
--- a/skeletons/NativeInteger.c
+++ b/skeletons/NativeInteger.c
@@ -451,7 +451,7 @@
         assert(emap_len > 0);
         value = emap[asn_random_between(0, emap_len - 1)].nat_value;
     } else {
-        const asn_per_constraint_t *ct;
+        const asn_per_constraints_t *ct;
 
         static const long variants[] = {
             -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384,
@@ -469,8 +469,13 @@
         }
 
         if(!constraints) constraints = &td->encoding_constraints;
-        ct = constraints ? &constraints->per_constraints->value : 0;
-        (void)ct;
+        ct = constraints ? constraints->per_constraints : 0;
+        if(ct && (ct->value.flags & APC_CONSTRAINED)) {
+            if(value < ct->value.lower_bound || value > ct->value.upper_bound) {
+                value = asn_random_between(ct->value.lower_bound,
+                                           ct->value.upper_bound);
+            }
+        }
     }
 
     *sptr = st;
