diff -r 82552664d471 -r c06fe5350b34 NoteHypothesis.cpp
--- a/NoteHypothesis.cpp
+++ b/NoteHypothesis.cpp
@@ -98,7 +98,9 @@
         // avoid piling up a lengthy sequence of estimates that are
         // all acceptable but are in total not enough to cause us to
         // be satisfied
-        m_state = Rejected;
+        if (m_pending.empty()) {
+            m_state = Rejected;
+        }
         return false;
     }
 
diff -r 82552664d471 -r c06fe5350b34 test/TestNoteHypothesis.cpp
--- a/test/TestNoteHypothesis.cpp
+++ b/test/TestNoteHypothesis.cpp
@@ -73,6 +73,20 @@
     BOOST_CHECK(!h.accept(e));
     BOOST_CHECK_EQUAL(h.getState(), NoteHypothesis::Rejected);
 }
+
+BOOST_AUTO_TEST_CASE(noConfidenceIgnore)
+{
+    // But if we're already in process we don't go to rejected state,
+    // we just ignore this hypothesis
+    NoteHypothesis h;
+    NoteHypothesis::Estimate e;
+    BOOST_CHECK_EQUAL(h.getState(), NoteHypothesis::New);
+    BOOST_CHECK(h.accept(e));
+    BOOST_CHECK_EQUAL(h.getState(), NoteHypothesis::Provisional);
+    e.confidence = 0;
+    BOOST_CHECK(!h.accept(e));
+    BOOST_CHECK_EQUAL(h.getState(), NoteHypothesis::Provisional);
+}
 		
 BOOST_AUTO_TEST_CASE(tooSlow)
 {
