--- a/src/query/wasatorcl.cpp
+++ b/src/query/wasatorcl.cpp
@@ -134,8 +134,9 @@
 	    continue;
 
 	case WasaQuery::OP_LEAF: {
-	    LOGDEB2(("wasaQueryToRcl: leaf clause [%s]:[%s]\n", 
-		     (*it)->m_fieldspec.c_str(), (*it)->m_value.c_str()));
+	    LOGDEB(("wasaQueryToRcl: leaf clause [%s]:[%s] slack %d\n", 
+		    (*it)->m_fieldspec.c_str(), (*it)->m_value.c_str(),
+		    (*it)->m_slack));
 
             // Change terms found in the "autosuffs" list into "ext"
             // field queries
@@ -152,15 +153,17 @@
 
 	    unsigned int mods = (unsigned int)(*it)->m_modifiers;
 
-	    if (TextSplit::hasVisibleWhite((*it)->m_value)) {
-		int slack = (mods & WasaQuery::WQM_PHRASESLACK) ? 10 : 0;
+	    // I'm not sure I understand the phrase/near detection
+	    // thereafter anymore, maybe it would be better to have an
+	    // explicit flag. Mods can only be set after a double
+	    // quote.
+	    if (TextSplit::hasVisibleWhite((*it)->m_value) || mods) {
 		Rcl::SClType tp = Rcl::SCLT_PHRASE;
 		if (mods & WasaQuery::WQM_PROX) {
 		    tp = Rcl::SCLT_NEAR;
-		    slack = 10;
 		}
 		nclause = new Rcl::SearchDataClauseDist(tp, (*it)->m_value,
-							slack,
+							(*it)->m_slack,
 							(*it)->m_fieldspec);
 	    } else {
 		nclause = new Rcl::SearchDataClauseSimple(Rcl::SCLT_AND, 
@@ -173,7 +176,7 @@
 		return 0;
 	    }
 	    if (mods & WasaQuery::WQM_NOSTEM) {
-		nclause->setModifiers(Rcl::SearchDataClause::SDCM_NOSTEMMING);
+		nclause->addModifier(Rcl::SearchDataClause::SDCM_NOSTEMMING);
 	    }
 	    if ((*it)->m_weight != 1.0)
 		nclause->setWeight((*it)->m_weight);