Index: CHANGES.txt
===================================================================
--- CHANGES.txt	(revision 791528)
+++ CHANGES.txt	(working copy)
@@ -126,6 +126,14 @@
     applications will be affected by this, but only if the application
     is failing to close reader/writers.  (Brian Groose via Mike
     McCandless)
+    
+ 9. LUCENE-1650: If you overrode CustomScoreQuery#customScore(int doc, 
+    float subQueryScore, float valSrcScore) in the past, the default
+    CustomScoreQuery#customScore(int doc, float subQueryScore, float 
+    valSrcScores[]) impl would call it (or not) depending on the number
+    of ValueSourceQuerys passed to the CustomScoreQuery constructor. 
+    It will be called now irregardless of the number of ValueSourceQuerys. 
+    (Simon Willnauer via Mark Miller)   
 
 API Changes
 
@@ -352,6 +360,11 @@
 17. LUCENE-1599: Add clone support for SpanQuerys. SpanRegexQuery counts
     on this functionality and does not work correctly without it.
     (Billow Gao, Mark Miller)
+    
+18. LUCENE-1650: Make overriding CustomScoreQuery#customScore consistent,
+    rather than having to overload a different method depending on the
+    number of ValueSourceQuerys passed to the constructor. 
+    (Simon Willnauer via Mark Miller)
 
 New features
 
@@ -567,6 +580,9 @@
 
 Documentation
 
+ 1. LUCENE-1650: Fix the javadoc for "Modified Score" formula in 
+    CustomScoreQuery. (Simon Willnauer via Mark Miller)
+
 Build
 
  1. LUCENE-1440: Add new targets to build.xml that allow downloading
Index: src/java/org/apache/lucene/search/function/CustomScoreQuery.java
===================================================================
--- src/java/org/apache/lucene/search/function/CustomScoreQuery.java	(revision 791528)
+++ src/java/org/apache/lucene/search/function/CustomScoreQuery.java	(working copy)
@@ -164,14 +164,14 @@
    * <p>
    * If your custom scoring is different than the default herein you 
    * should override at least one of the two customScore() methods.
-   * If the number of ValueSourceQueries is always &lt; 2 it is 
-   * sufficient to override the other 
+   * If you are not required to access the score values of individual
+   * ValueSourceQueries it is sufficient to override the other 
    * {@link #customScore(int, float, float) customScore()} 
    * method, which is simpler. 
    * <p>
    * The default computation herein is a multiplication of given scores:
    * <pre>
-   *     ModifiedScore = valSrcScore * valSrcScores[0] * valSrcScores[1] * ...
+   *     ModifiedScore = subQueryScore * valSrcScores[0] * valSrcScores[1] * ...
    * </pre>
    * 
    * @param doc id of scored doc. 
@@ -186,11 +186,12 @@
     if (valSrcScores.length == 0) {
       return customScore(doc, subQueryScore, 1);
     }
-    float score = subQueryScore;
+    
+    float valSrcScore = 1.0f;
     for(int i = 0; i < valSrcScores.length; i++) {
-      score *= valSrcScores[i];
+      valSrcScore *= valSrcScores[i];
     }
-    return score;
+    return customScore(doc, subQueryScore, valSrcScore);
   }
 
   /**
@@ -200,8 +201,9 @@
    * <p>
    * If your custom scoring is different than the default herein you 
    * should override at least one of the two customScore() methods.
-   * If the number of ValueSourceQueries is always &lt; 2 it is 
-   * sufficient to override this customScore() method, which is simpler. 
+   * If you are not required to access the score values of individual
+   * ValueSourceQueries it is sufficient to override this customScore() method,
+   * which is simpler. 
    * <p>
    * The default computation herein is a multiplication of the two scores:
    * <pre>

