diff --git a/CHANGES b/CHANGES
index b3c3c055e2fb8b7095721067c9331753c05c3f3f..1f2a7e88746070b18b79aab8df84bb8bc1cb2fbd 100644
--- a/CHANGES
+++ b/CHANGES
@@ -20,6 +20,7 @@ OpenLDAP 2.3.22 Engineering
 	Fixed slapo-translucent modifications
 	Fixed libldap_r thread debug missing break
 	Fixed libldap_r tpool cleanup
+	Fixed liblutil time resolution issue
 
 OpenLDAP 2.3.21 Release
 	Fixed libldap referral chasing issue (ITS#4448)
diff --git a/libraries/liblutil/utils.c b/libraries/liblutil/utils.c
index 31849fea04141b836f91a164732310bcb6213c05..ce5304f3f17720b701e4082046c62499e0608559 100644
--- a/libraries/liblutil/utils.c
+++ b/libraries/liblutil/utils.c
@@ -247,14 +247,17 @@ int lutil_parsetime( char *atm, struct lutil_tm *tm )
 		if (tm->tm_sec < 0 || tm->tm_sec > 61) break;
 
 		/* Fractions of seconds */
-		for (i = 0, fracs = 0; isdigit((unsigned char) *ptr); ) {
-			i*=10; i+= *ptr++ - '0';
-			fracs++;
-		}
-		tm->tm_usec = i;
-		if (i) {
-			for (i = fracs; i<6; i++)
-				tm->tm_usec *= 10;
+		if ( *ptr == '.' ) {
+			ptr++;
+			for (i = 0, fracs = 0; isdigit((unsigned char) *ptr); ) {
+				i*=10; i+= *ptr++ - '0';
+				fracs++;
+			}
+			tm->tm_usec = i;
+			if (i) {
+				for (i = fracs; i<6; i++)
+					tm->tm_usec *= 10;
+			}
 		}
 
 		/* Must be UTC */