diff --git a/src/slurmctld/read_config.c b/src/slurmctld/read_config.c
index fcdbc0ee1dc22ebf8bf1ee76383a9262182f732c..5c14570886c40320df482c25e82990ad3aa0c78c 100644
--- a/src/slurmctld/read_config.c
+++ b/src/slurmctld/read_config.c
@@ -48,6 +48,7 @@
 #include "src/common/slurm_jobcomp.h"
 #include "src/common/switch.h"
 #include "src/common/xstring.h"
+
 #include "src/slurmctld/locks.h"
 #include "src/slurmctld/proc_req.h"
 #include "src/slurmctld/read_config.h"
@@ -509,6 +510,7 @@ static int _parse_part_spec(char *in_line)
 	int hidden_val = NO_VAL, state_val = NO_VAL, shared_val = NO_VAL;
 	int error_code;
 	struct part_record *part_ptr;
+	static int default_part_val = NO_VAL;
 
 	if ((error_code =
 	     load_string(&partition_name, "PartitionName=", in_line)))
@@ -552,7 +554,8 @@ static int _parse_part_spec(char *in_line)
 			goto cleanup;
 		}
 		xfree(default_str);
-	}
+	} else
+		default_val = default_part_val;
 
 	if (hidden_str) {
 		if (strcasecmp(hidden_str, "YES") == 0)
@@ -636,6 +639,8 @@ static int _parse_part_spec(char *in_line)
 
 	if (strcasecmp(partition_name, "DEFAULT") == 0) {
 		xfree(partition_name);
+		if (default_val != NO_VAL)
+			default_part_val = default_val;
 		if (hidden_val != NO_VAL)
 			default_part.hidden  = hidden_val;
 		if (max_time_val != NO_VAL)