diff --git a/CHANGES b/CHANGES
index 05548265a8711a441c03ec14470184dcf2c11633..7d93d96f49a4fc0101a8f9eb5df14ddae3518bdc 100644
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,7 @@ OpenLDAP 2.4.24 Engineering
 	Fixed liblber to not close invalid sockets (ITS#6585)
 	Fixed slapd modify to return actual error (ITS#6581)
 	Fixed slapd-bdb entry cache delete failure (ITS#6577)
+	Fixed slapo-syncprov to send error if consumer is newer (ITS#6606)
 
 OpenLDAP 2.4.23 Release (2010/06/30)
 	Fixed libldap to return server's error code (ITS#6569)
diff --git a/servers/slapd/overlays/syncprov.c b/servers/slapd/overlays/syncprov.c
index 8a3727d375ec19440b14892c98401ceea38d2d70..60db65e1b8ddeb06d3be7bd40228b8810b336169 100644
--- a/servers/slapd/overlays/syncprov.c
+++ b/servers/slapd/overlays/syncprov.c
@@ -2483,8 +2483,9 @@ syncprov_op_search( Operation *op, SlapReply *rs )
 					if ( newer < 0 )
 						changed = SS_CHANGED;
 					else if ( newer > 0 ) {
-					/* our state is older, tell consumer nothing */
-						rs->sr_err = LDAP_SUCCESS;
+					/* our state is older, complain to consumer */
+						rs->sr_err = LDAP_UNWILLING_TO_PERFORM;
+						rs->sr_text = "consumer state is newer than provider!";
 bailout:
 						if ( sop ) {
 							syncops **sp = &si->si_ops;