diff --git a/myisam/ft_boolean_search.c b/myisam/ft_boolean_search.c
index c71284642287b6ad0a7b3b36bfe2d7b29140c67c..799022a5a0d7f51144250d11426ea4f7a8df091f 100644
--- a/myisam/ft_boolean_search.c
+++ b/myisam/ft_boolean_search.c
@@ -55,8 +55,9 @@ static double _nwghts[11]=
 static double *nwghts=_nwghts+5; /* nwghts[i] = -0.5*1.5**i */
 
 #define FTB_FLAG_TRUNC 1                  /* MUST be 1                  */
-#define FTB_FLAG_YES   2                  /* These two - YES and NO     */
-#define FTB_FLAG_NO    4                  /*  should NEVER be set both  */
+#define FTB_FLAG_YES   2                  /*  no two from these three   */
+#define FTB_FLAG_NO    4                  /*   YES, NO, WONLY           */
+#define FTB_FLAG_WONLY 8                  /*  should be ever set both   */
 
 typedef struct st_ftb_expr FTB_EXPR;
 struct st_ftb_expr
@@ -444,7 +445,8 @@ static void _ftb_climb_the_tree(FTB *ftb, FTB_WORD *ftbw, FT_SEG_ITERATOR *ftsi_
       ftbe->cur_weight +=  weight;
       if (ftbe->yesses < ythresh)
         break;
-      yn= (ftbe->yesses++ == ythresh) ? ftbe->flags : 0 ;
+      if (!(yn & FTB_FLAG_WONLY))
+        yn= (ftbe->yesses++ == ythresh) ? ftbe->flags : FTB_FLAG_WONLY ;
       weight*= ftbe->weight;
     }
   }
diff --git a/mysql-test/r/fulltext.result b/mysql-test/r/fulltext.result
index 651baad266e554d8ee068b05ff280c41a7c6ff77..738941f63c706595a9c0e30fae70432b2a2a4425 100644
--- a/mysql-test/r/fulltext.result
+++ b/mysql-test/r/fulltext.result
@@ -117,6 +117,10 @@ MySQL has now support	for full-text search
 select * from t1 where MATCH a,b AGAINST ('"text i"' IN BOOLEAN MODE);
 a	b
 Full-text indexes	are called collections
+select * from t1 where MATCH a,b AGAINST ('+(support collections) +foobar*' IN BOOLEAN MODE);
+a	b
+select * from t1 where MATCH a,b AGAINST ('+(+(support collections)) +foobar*' IN BOOLEAN MODE);
+a	b
 select * from t1 where MATCH a AGAINST ("search" IN BOOLEAN MODE);
 a	b
 Full-text search in MySQL	implements vector space model
diff --git a/mysql-test/t/fulltext.test b/mysql-test/t/fulltext.test
index 02657ba37753f5522fb384ee27439b47da8b2e07..774a3b4261987a2277f6797eacd8657b51c71526 100644
--- a/mysql-test/t/fulltext.test
+++ b/mysql-test/t/fulltext.test
@@ -18,7 +18,6 @@ select * from t1 where MATCH(a,b) AGAINST ("collections");
 select * from t1 where MATCH(a,b) AGAINST ("indexes");
 select * from t1 where MATCH(a,b) AGAINST ("indexes collections");
 
-
 # add_ft_keys() tests
 
 explain select * from t1 where MATCH(a,b) AGAINST ("collections");
@@ -54,6 +53,9 @@ select * from t1 where MATCH a,b AGAINST ('"text search" -"now support"' IN BOOL
 select * from t1 where MATCH a,b AGAINST ('"text search" +"now support"' IN BOOLEAN MODE);
 select * from t1 where MATCH a,b AGAINST ('"text i"' IN BOOLEAN MODE);
 
+select * from t1 where MATCH a,b AGAINST ('+(support collections) +foobar*' IN BOOLEAN MODE);
+select * from t1 where MATCH a,b AGAINST ('+(+(support collections)) +foobar*' IN BOOLEAN MODE);
+
 # boolean w/o index:
 
 select * from t1 where MATCH a AGAINST ("search" IN BOOLEAN MODE);