diff --git a/src/main/cpp/mapfilter.cpp b/src/main/cpp/mapfilter.cpp
index b164ae7..5ea3110 100644
--- a/src/main/cpp/mapfilter.cpp
+++ b/src/main/cpp/mapfilter.cpp
@@ -82,10 +82,10 @@
 
 	if (acceptOnMatch)
 	{
-		return matched ? Filter::ACCEPT : Filter::DENY;
+		return matched ? Filter::ACCEPT : Filter::NEUTRAL;
 	}
 	else
 	{
-		return matched ? Filter::DENY : Filter::ACCEPT;
+		return matched ? Filter::DENY : Filter::NEUTRAL;
 	}
 }
diff --git a/src/test/cpp/filter/mapfiltertest.cpp b/src/test/cpp/filter/mapfiltertest.cpp
index bfb9e53..0b3d620 100644
--- a/src/test/cpp/filter/mapfiltertest.cpp
+++ b/src/test/cpp/filter/mapfiltertest.cpp
@@ -57,8 +57,8 @@
 	}
 
 	/**
-	 * Check that MapFilter.decide() returns Filter.ACCEPT or Filter.DENY
-	 *   based on Accept on Match setting when key/value does not match
+	 * Check that MapFilter.decide() returns Filter.NEUTRAL
+	 *   when key/value does not match
 	 */
 	void test2()
 	{
@@ -74,10 +74,10 @@
 		filter->activateOptions(p);
 
 		filter->setAcceptOnMatch(true);
-		LOGUNIT_ASSERT_EQUAL(Filter::DENY, filter->decide(event));
+		LOGUNIT_ASSERT_EQUAL(Filter::NEUTRAL, filter->decide(event));
 
 		filter->setAcceptOnMatch(false);
-		LOGUNIT_ASSERT_EQUAL(Filter::ACCEPT, filter->decide(event));
+		LOGUNIT_ASSERT_EQUAL(Filter::NEUTRAL, filter->decide(event));
 	}
 
 	/**
@@ -125,9 +125,9 @@
 		filter->activateOptions(p);
 
 		filter->setMustMatchAll(true);      // AND T/F
-		LOGUNIT_ASSERT_EQUAL(Filter::DENY, filter->decide(event));      // does not match second
+		LOGUNIT_ASSERT_EQUAL(Filter::NEUTRAL, filter->decide(event));   // does not match second
 
-		filter->setMustMatchAll(false); // OR T/F
+		filter->setMustMatchAll(false);     // OR T/F
 		LOGUNIT_ASSERT_EQUAL(Filter::ACCEPT, filter->decide(event));    // matches first
 
 		filter->setKeyValue(LOG4CXX_STR("my.name"), LOG4CXX_STR("Test"));
@@ -135,29 +135,26 @@
 		filter->setMustMatchAll(true);      // AND T/T
 		LOGUNIT_ASSERT_EQUAL(Filter::ACCEPT, filter->decide(event));    // matches all
 
-		filter->setMustMatchAll(false); // OR T/T
+		filter->setMustMatchAll(false);     // OR T/T
 		LOGUNIT_ASSERT_EQUAL(Filter::ACCEPT, filter->decide(event));    // matches first
 
 		filter->setKeyValue(LOG4CXX_STR("my.ip"), LOG4CXX_STR("localhost"));
 
 		filter->setMustMatchAll(true);      // AND F/T
-		LOGUNIT_ASSERT_EQUAL(Filter::DENY, filter->decide(event));      // does not match first
+		LOGUNIT_ASSERT_EQUAL(Filter::NEUTRAL, filter->decide(event));   // does not match first
 
-		filter->setMustMatchAll(false); // OR F/T
+		filter->setMustMatchAll(false);     // OR F/T
 		LOGUNIT_ASSERT_EQUAL(Filter::ACCEPT, filter->decide(event));    // matches second
 
 		filter->setKeyValue(LOG4CXX_STR("my.name"), LOG4CXX_STR("Unkonwn"));
 
 		filter->setMustMatchAll(true);      // AND F/F
-		LOGUNIT_ASSERT_EQUAL(Filter::DENY, filter->decide(event));      // does not match first
+		LOGUNIT_ASSERT_EQUAL(Filter::NEUTRAL, filter->decide(event));   // does not match first
 
-		filter->setMustMatchAll(false); // OR F/F
-		LOGUNIT_ASSERT_EQUAL(Filter::DENY, filter->decide(event));      // matches none
+		filter->setMustMatchAll(false);     // OR F/F
+		LOGUNIT_ASSERT_EQUAL(Filter::NEUTRAL, filter->decide(event));   // matches none
 	}
 
 };
 
-
 LOGUNIT_TEST_SUITE_REGISTRATION(MapFilterTest);
-
-
