ignoring non-normalized values


git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@927 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/skeletons/GeneralizedTime.c b/skeletons/GeneralizedTime.c
index 45a082b..e9aa478 100644
--- a/skeletons/GeneralizedTime.c
+++ b/skeletons/GeneralizedTime.c
@@ -559,18 +559,23 @@
 	/*
 	 * Deal with fractions.
 	 */
-	if(frac_base >= 10 && frac_value > 0) {
+	if(frac_base >= 10
+	&& frac_value > 0
+	/* 1001 ms? should ignore or adjust seconds */
+	&& (frac_value/frac_base) == 0
+	) {
 		char *end = p + 1 + 6;	/* '.' + maximum 6 digits */
-		char *z;
-		*p++ = '.';
+		char *z = p;
+		*z++ = '.';
+		frac_value %= frac_base;
 		do {
 			int digit;
 			frac_base /= 10;
 			digit = frac_value / frac_base;
 			frac_value %= frac_base;
-			*p++ = digit + 0x30;
-		} while(frac_base >= 10 && frac_value > 0 && p < end);
-		for(z = p - 1; *z == 0x30; --z);	/* Strip zeroes */
+			*z++ = digit + 0x30;
+		} while(frac_base >= 10 && frac_value > 0 && z < end);
+		for(--z; *z == 0x30; --z);	/* Strip zeroes */
 		p = z + (*z != '.');
 		size = p - buf;
 	}