diff --git a/doc/man/man5/slapd.conf.5 b/doc/man/man5/slapd.conf.5
index 5a1f3aaac555d44c492a1ba9a14aa9129221894b..147db4507e0a4b6db21a5e5fe2641b5f34182824 100644
--- a/doc/man/man5/slapd.conf.5
+++ b/doc/man/man5/slapd.conf.5
@@ -512,10 +512,11 @@ e.g. ldapi:// (and eventually IPSEC).  It is not normally used.
 .TP
 .B sizelimit <integer> 
 .TP
-.B sizelimit size[.{soft|hard|unchecked}]=<integer>
+.B sizelimit size[.{soft|hard|unchecked}]=<integer> [...]
 Specify the maximum number of entries to return from a search operation.
 The default size limit is 500.
 The second format allows a fine grain setting of the size limits.
+Extra args can be added on the same line.
 See
 .BR limits
 for an explanation of the different flags.
@@ -539,11 +540,12 @@ The default is 32.
 .TP
 .B timelimit <integer>
 .TP
-.B timelimit time[.{soft|hard}]=<integer>
+.B timelimit time[.{soft|hard}]=<integer> [...]
 Specify the maximum number of seconds (in real time)
 .B slapd
 will spend answering a search request.  The default time limit is 3600.
 The second format allows a fine grain setting of the time limits.
+Extra args can be added on the same line.
 See
 .BR limits
 for an explanation of the different flags.
diff --git a/servers/slapd/config.c b/servers/slapd/config.c
index 3547d7548d9e760fea32fc5e15ef3fdf0c0ed0cf..adef505afabefc4ac9c69c6ff64d7584c4a7f45c 100644
--- a/servers/slapd/config.c
+++ b/servers/slapd/config.c
@@ -694,7 +694,7 @@ read_config( const char *fname )
 
 		/* set size limit */
 		} else if ( strcasecmp( cargv[0], "sizelimit" ) == 0 ) {
-			int rc = 0;
+			int rc = 0, i;
 			struct slap_limits_set *lim;
 			
 			if ( cargc < 2 ) {
@@ -717,30 +717,36 @@ read_config( const char *fname )
 				lim = &be->be_def_limit;
 			}
 
-			if ( strncasecmp( cargv[1], "size", 4 ) == 0 ) {
-				rc = parse_limit( cargv[1], lim );
-			} else {
-				lim->lms_s_soft = atoi( cargv[1] );
-				lim->lms_s_hard = 0;
-			}
+			for ( i = 1; i < cargc; i++ ) {
+				if ( strncasecmp( cargv[i], "size", 4 ) == 0 ) {
+					rc = parse_limit( cargv[i], lim );
+				} else {
+					lim->lms_s_soft = atoi( cargv[i] );
+					lim->lms_s_hard = 0;
+				}
 
-			if ( rc ) {
+				if ( rc ) {
 #ifdef NEW_LOGGING
-				LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-					   "%s: line %d: unable to parse value"
-					   " \"%s\" in \"sizelimit <limit>\""
-					   " line.\n",
-					   fname, lineno, cargv[1] ));
+					LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+						   "%s: line %d: unable "
+						   "to parse value \"%s\" "
+						   "in \"sizelimit "
+						   "<limit>\" line.\n",
+						   fname, lineno, cargv[i] ));
 #else
-				Debug( LDAP_DEBUG_ANY,
-	    "%s: line %d: unable to parse value \"%s\" in \"sizelimit <limit>\" line\n",
-				    fname, lineno, cargv[1] );
+					Debug( LDAP_DEBUG_ANY,
+					    	"%s: line %d: unable "
+						"to parse value \"%s\" "
+						"in \"sizelimit "
+						"<limit>\" line\n",
+    						fname, lineno, cargv[i] );
 #endif
+				}
 			}
 
 		/* set time limit */
 		} else if ( strcasecmp( cargv[0], "timelimit" ) == 0 ) {
-			int rc = 0;
+			int rc = 0, i;
 			struct slap_limits_set *lim;
 			
 			if ( cargc < 2 ) {
@@ -763,25 +769,31 @@ read_config( const char *fname )
 				lim = &be->be_def_limit;
 			}
 
-			if ( strncasecmp( cargv[1], "time", 4 ) == 0 ) {
-				rc = parse_limit( cargv[1], lim );
-			} else {
-				lim->lms_t_soft = atoi( cargv[1] );
-				lim->lms_t_hard = 0;
-			}
+			for ( i = 1; i < cargc; i++ ) {
+				if ( strncasecmp( cargv[i], "time", 4 ) == 0 ) {
+					rc = parse_limit( cargv[i], lim );
+				} else {
+					lim->lms_t_soft = atoi( cargv[i] );
+					lim->lms_t_hard = 0;
+				}
 
-			if ( rc ) {
+				if ( rc ) {
 #ifdef NEW_LOGGING
-				LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-					   "%s: line %d: unable to parse value"
-					   " \"%s\" in \"timelimit <limit>\""
-					   " line.\n",
-					   fname, lineno, cargv[1] ));
+					LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+						   "%s: line %d: unable "
+						   "to parse value \"%s\" "
+						   "in \"timelimit "
+						   "<limit>\" line.\n",
+						   fname, lineno, cargv[i] ));
 #else
-				Debug( LDAP_DEBUG_ANY,
-	    "%s: line %d: unable to parse value \"%s\" in \"timelimit <limit>\" line\n",
-				    fname, lineno, cargv[1] );
+					Debug( LDAP_DEBUG_ANY,
+						"%s: line %d: unable "
+						"to parse value \"%s\" "
+						"in \"timelimit "
+						"<limit>\" line\n",
+						fname, lineno, cargv[i] );
 #endif
+				}
 			}
 
 		/* set regex-based limits */