diff --git a/src/radeon_crtc.c b/src/radeon_crtc.c
index 7164138..9e38907 100644
--- a/src/radeon_crtc.c
+++ b/src/radeon_crtc.c
@@ -155,12 +155,12 @@ RADEONComputePLL(RADEONPLLPtr pll,
 		continue;
 	}
 
-	if (vco < pll->pll_out_min || vco > pll->pll_out_max)
-	    continue;
+  ////if (vco < pll->pll_out_min || vco > pll->pll_out_max)
+//	    continue;
 
 	for (ref_div = min_ref_div; ref_div <= max_ref_div; ++ref_div) {
 	    CARD32 feedback_div, current_freq, error, vco_diff;
-	    CARD32 pll_in = pll->reference_freq / ref_div;
+	  CARD32 pll_in = pll->reference_freq / ref_div;
 
 	    if (pll_in < pll->pll_in_min || pll_in > pll->pll_in_max)
 		continue;
@@ -168,8 +168,16 @@ RADEONComputePLL(RADEONPLLPtr pll,
 	    feedback_div = RADEONDiv((CARD64)freq * ref_div * post_div,
 				     pll->reference_freq * 10000);
 
-	    if (feedback_div < pll->min_feedback_div || feedback_div > pll->max_feedback_div)
-		continue;
+//	    if (feedback_div < pll->min_feedback_div || feedback_div > pll->max_feedback_div)
+//		continue;
+
+      feedback_div = max(feedback_div, pll->min_feedback_div);
+      feedback_div = min(feedback_div, pll->max_feedback_div);
+
+      vco=RADEONDiv((CARD64)pll->reference_freq * 10000 * feedback_div,
+				     ref_div);
+      if (vco < pll->pll_out_min || vco > pll->pll_out_max)
+        continue;
 
 	    current_freq = RADEONDiv((CARD64)pll->reference_freq * 10000 * feedback_div,
 				     ref_div * post_div);
