diff --git a/src/common/assoc_mgr.c b/src/common/assoc_mgr.c
index 4398b4f9df8613d5b921db85d49fea0f903b9548..0dc099b420a2b6718182bf636a4e3d7947d2bfed 100644
--- a/src/common/assoc_mgr.c
+++ b/src/common/assoc_mgr.c
@@ -296,7 +296,7 @@ static int _set_assoc_parent_and_user(acct_association_rec_t *assoc,
 
 	return SLURM_SUCCESS;
 }
-
+	
 static int _post_association_list(List assoc_list)
 {
 	acct_association_rec_t *assoc = NULL;
@@ -341,7 +341,7 @@ static int _post_association_list(List assoc_list)
 	//END_TIMER2("load_associations");
 	return SLURM_SUCCESS;
 }
-	
+
 static int _post_user_list(List user_list)
 {
 	acct_user_rec_t *user = NULL;
@@ -1517,7 +1517,11 @@ extern List assoc_mgr_get_shares(void *db_conn,
 			share->user = 1;
 		} else {
 			share->name = xstrdup(assoc->acct);
-			share->parent = xstrdup(assoc->parent_acct);
+			if(!assoc->parent_acct && assoc->parent_assoc_ptr)
+				share->parent = 
+					xstrdup(assoc->parent_assoc_ptr->acct);
+			else
+				share->parent = xstrdup(assoc->parent_acct);
 		}
 		share->usage_norm = (double)assoc->usage_norm;
 		share->usage_efctv = (double)assoc->usage_efctv;
@@ -1743,7 +1747,7 @@ extern int assoc_mgr_update_assocs(acct_update_object_t *update)
 				ListIterator itr2 = NULL;
 				if(!object->childern_list
 				   || !list_count(object->childern_list))
-					continue;
+					goto is_user;
 				itr2 = list_iterator_create(
 					object->childern_list);
 				while((rec = list_next(itr2))) 
@@ -1753,7 +1757,7 @@ extern int assoc_mgr_update_assocs(acct_update_object_t *update)
 					rec->level_shares = count;
 				list_iterator_destroy(itr2);
 			}
-				
+		is_user:
 			if(!object->user)
 				continue;
 
@@ -1776,7 +1780,7 @@ extern int assoc_mgr_update_assocs(acct_update_object_t *update)
 			list_iterator_reset(itr);
 			while((object = list_next(itr))) {
 				_normalize_assoc_shares(object);
-				log_assoc_rec(rec, assoc_mgr_qos_list);
+				log_assoc_rec(object, assoc_mgr_qos_list);
 			}
 			slurm_mutex_unlock(&assoc_mgr_qos_lock);
 		}
@@ -2570,3 +2574,4 @@ extern int assoc_mgr_refresh_lists(void *db_conn, assoc_init_args_t *args)
 	return SLURM_SUCCESS;	
 }
 
+
diff --git a/src/common/slurm_accounting_storage.c b/src/common/slurm_accounting_storage.c
index bc21fcea150de158bd0e6d475e45bacfd0038f23..bc56ddc0ecfee5d914d0212e12aece81009ff935 100644
--- a/src/common/slurm_accounting_storage.c
+++ b/src/common/slurm_accounting_storage.c
@@ -7017,6 +7017,8 @@ extern char *get_qos_complete_str(List qos_list, List num_qos_list)
 
 extern void log_assoc_rec(acct_association_rec_t *assoc_ptr, List qos_list)
 {
+	xassert(assoc_ptr);
+
 	debug2("association rec id : %u", assoc_ptr->id);
 	debug2("  acct             : %s", assoc_ptr->acct);
 	debug2("  cluster          : %s", assoc_ptr->cluster);
diff --git a/src/plugins/priority/multifactor/priority_multifactor.c b/src/plugins/priority/multifactor/priority_multifactor.c
index 92eadc46b618543ae14bae4a011c8853e5fcb810..c9201a03eb1906dfc98e96949ac2e104955e382c 100644
--- a/src/plugins/priority/multifactor/priority_multifactor.c
+++ b/src/plugins/priority/multifactor/priority_multifactor.c
@@ -486,12 +486,12 @@ static void *_decay_thread(void *no_data)
 		}
 
 		if(!last_ran) 
-			goto sleep_now;
+			goto get_usage;
 		else
 			run_delta = (start_time - last_ran);
 
 		if(run_delta <= 0)
-			goto sleep_now;
+			goto get_usage;
 
 		real_decay = pow(decay_factor, (double)run_delta);
 
@@ -583,12 +583,12 @@ static void *_decay_thread(void *no_data)
 		list_iterator_destroy(itr);
 		unlock_slurmctld(job_write_lock);
 
+	get_usage:
 		/* now calculate all the normalized usage here */
 		slurm_mutex_lock(&assoc_mgr_association_lock);
 		_set_children_usage_efctv(assoc_mgr_root_assoc->childern_list);
 		slurm_mutex_unlock(&assoc_mgr_association_lock);
 	
-	sleep_now:
 		last_ran = start_time;
 
 		_write_last_decay_ran(last_ran);