Index: matcher/multimatch.cc
===================================================================
--- matcher/multimatch.cc	(revision 9473)
+++ matcher/multimatch.cc	(working copy)
@@ -604,6 +604,11 @@
 		min_item = items.front();
 		if (sort_by == REL || sort_by == REL_VAL) {
 		    if (docs_matched >= check_at_least) {
+			if (sort_by == REL) {
+			    // We're done if this is a forward boolean match
+			    // (bodgetastic, FIXME better if we can)
+			    if (max_weight == 0 && sort_forward) break;
+			}
 			if (min_item.wt > min_weight) {
 			    DEBUGLINE(MATCH, "Setting min_weight to " <<
 				      min_item.wt << " from " << min_weight);
@@ -619,9 +624,11 @@
 		items.push_back(new_item);
 		is_heap = false;
 		if (sort_by == REL && items.size() == max_msize) {
-		    // We're done if this is a forward boolean match
-		    // (bodgetastic, FIXME better if we can)
-		    if (max_weight == 0 && sort_forward) break;
+		    if (docs_matched >= check_at_least) {
+			// We're done if this is a forward boolean match
+			// (bodgetastic, FIXME better if we can)
+			if (max_weight == 0 && sort_forward) break;
+		    }
 		}
 	    }
 	}
