diff --git a/src/slurmctld/powercapping.c b/src/slurmctld/powercapping.c
index a7dc4c744349f555dffd3eb83d9393284d759440..b12b27727dadf7ad0eb7970725d4a6b50f164bef 100644
--- a/src/slurmctld/powercapping.c
+++ b/src/slurmctld/powercapping.c
@@ -430,6 +430,12 @@ int* powercap_get_job_nodes_numfreq(bitstr_t *select_bitmap,
 
 	if (!_powercap_enabled())
 		return 0;
+	if((cpu_freq_min == NO_VAL) && (cpu_freq_max == NO_VAL)){
+		allowed_freqs = xmalloc(sizeof(int)*2);
+		allowed_freqs[0]=0;
+		
+		return allowed_freqs;
+	}
 
 	for(i=0, node_ptr=node_record_table_ptr; i<node_record_count;
 	    i++, node_ptr++){
@@ -437,14 +443,22 @@ int* powercap_get_job_nodes_numfreq(bitstr_t *select_bitmap,
 			layouts_entity_pullget_kv(l_name, node_ptr->name, 
 					L_NUM_FREQ, &num_freq, L_T_UINT16);
 			allowed_freqs = xmalloc(sizeof(int)*((int)num_freq+2));
-			allowed_freqs[-1] = num_freq;
+			allowed_freqs[-1] = (int) num_freq;
 			for(p=num_freq; p>0; p--){
 				sprintf(ename, "Cpufreq%d", p);
 				layouts_entity_pullget_kv(l_name, 
 					  	  node_ptr->name, ename, 
 						  &cpufreq, L_T_UINT32);
-				if((cpu_freq_min <= cpufreq) && 
-				   (cpufreq <= cpu_freq_max)){
+
+		/*In case a job is submitted with flags Low,High, etc on 
+		 *--cpu-freq parameter then we consider the whole range
+		 *of available frequencies on nodes
+		 */
+
+				if(((cpu_freq_min <= cpufreq) && 
+				   (cpufreq <= cpu_freq_max)) || 
+				   ((cpu_freq_min & CPU_FREQ_RANGE_FLAG) ||
+				   (cpu_freq_max & CPU_FREQ_RANGE_FLAG))){
 					new_num_freq++;
 					allowed_freqs[new_num_freq] = p;
 				}
@@ -452,8 +466,8 @@ int* powercap_get_job_nodes_numfreq(bitstr_t *select_bitmap,
 			break;
 		}
 	}
-
-	allowed_freqs[0] = (int)new_num_freq;
+                
+	allowed_freqs[0] = new_num_freq;
 	return allowed_freqs;
 }