check LP64 integers
diff --git a/skeletons/tests/check-INTEGER.c b/skeletons/tests/check-INTEGER.c
index a299fcd..008528f 100644
--- a/skeletons/tests/check-INTEGER.c
+++ b/skeletons/tests/check-INTEGER.c
@@ -122,8 +122,6 @@
 		assert(rlong == rlong2);
 	}
 
-	return 0;
-
 	shared_scratch_start = scratch;
 	ret = INTEGER_print(&asn_DEF_INTEGER, &val, 0, _print2buf, scratch);
 	assert(shared_scratch_start < scratch + sizeof(scratch));
@@ -240,6 +238,8 @@
 	check_xer(0, "<INTEGER>+2147483647</INTEGER>", 2147483647);
 	check_xer(0, "<INTEGER>2147483647</INTEGER>", 2147483647);
 	if(sizeof(long) == 4) {
+		check_xer( 0, "<INTEGER>-2147483648</INTEGER>", -2147483648);
+		check_xer(-1, "<INTEGER>-2147483649</INTEGER>", 0);
 		check_xer(-1, "<INTEGER>2147483648</INTEGER>", 0);
 		check_xer(-1, "<INTEGER>2147483649</INTEGER>", 0);
 		check_xer(-1, "<INTEGER>3147483649</INTEGER>", 0);
@@ -247,6 +247,30 @@
 		check_xer(-1, "<INTEGER>5147483649</INTEGER>", 0); /* special */
 		check_xer(-1, "<INTEGER>9147483649</INTEGER>", 0);
 		check_xer(-1, "<INTEGER>9999999999</INTEGER>", 0);
+		check_xer(-1, "<INTEGER>-5147483649</INTEGER>", 0);/* special */
+		check_xer(-1, "<INTEGER>-9147483649</INTEGER>", 0);
+		check_xer(-1, "<INTEGER>-9999999999</INTEGER>", 0);
+	}
+	if(sizeof(long) == 8) {
+		check_xer(0, "<INTEGER>2147483648</INTEGER>", 2147483648);
+		check_xer(0, "<INTEGER>2147483649</INTEGER>", 2147483649);
+		check_xer(0, "<INTEGER>3147483649</INTEGER>", 3147483649);
+		check_xer(0, "<INTEGER>4147483649</INTEGER>", 4147483649);
+		check_xer(0, "<INTEGER>5147483649</INTEGER>", 5147483649);
+		check_xer(0, "<INTEGER>9147483649</INTEGER>", 9147483649);
+		check_xer(0, "<INTEGER>9999999999</INTEGER>", 9999999999);
+		check_xer(0, "<INTEGER>9223372036854775807</INTEGER>", 9223372036854775807);
+		check_xer(-1, "<INTEGER>9223372036854775808</INTEGER>", 0);
+		check_xer(-1, "<INTEGER>10223372036854775807</INTEGER>", 0);
+		check_xer(-1, "<INTEGER>50223372036854775807</INTEGER>", 0);
+		check_xer(-1, "<INTEGER>100223372036854775807</INTEGER>", 0);
+		check_xer(-1, "<INTEGER>500223372036854775807</INTEGER>", 0);
+		check_xer(0, "<INTEGER>-9223372036854775808</INTEGER>", -9223372036854775808);
+		check_xer(-1, "<INTEGER>-9223372036854775809</INTEGER>", 0);
+		check_xer(-1, "<INTEGER>-10223372036854775807</INTEGER>", 0);
+		check_xer(-1, "<INTEGER>-50223372036854775807</INTEGER>", 0);
+		check_xer(-1, "<INTEGER>-100223372036854775807</INTEGER>", 0);
+		check_xer(-1, "<INTEGER>-500223372036854775807</INTEGER>", 0);
 	}
 
 	return 0;
diff --git a/skeletons/tests/check-OIDs.c b/skeletons/tests/check-OIDs.c
index 7609ed1..0805baa 100644
--- a/skeletons/tests/check-OIDs.c
+++ b/skeletons/tests/check-OIDs.c
@@ -400,13 +400,16 @@
 	check_parse("1.2147483647.3", 3);
 	if(sizeof(long) == 4) {
 		check_parse("1.2147483648.3", -1);	/* overflow on ILP32 */
+		check_parse("1.2147483649.3", -1);	/* overflow on ILP32 */
 		check_parse("1.3000000000.3", -1);
 		check_parse("1.4000000000.3", -1);
 		check_parse("1.5000000000.3", -1);
 		check_parse("1.6000000000.3", -1);
 		check_parse("1.9000000000.3", -1);
-	} else {
+	} else if(sizeof(long) == 8) {
 		check_parse("1.2147483648.3", 3);
+		check_parse("1.9223372036854775807.3", 3);
+		check_parse("1.9223372036854775808.3", -1);
 	}
 	check_parse("1.900a0000000.3", -1);
 	check_parse("1.900a.3", -1);