diff --git a/app/lib/dup/indexer.js b/app/lib/dup/indexer.js
index 4246d5cec67c8429989fa4ce45a4f8af2c43378c..f99fbc9b08f500837af0348e2ab37a5054e63936 100644
--- a/app/lib/dup/indexer.js
+++ b/app/lib/dup/indexer.js
@@ -518,6 +518,11 @@ const indexer = module.exports = {
       }
     }));
 
+    // BR_G34
+    yield mindex.map((ENTRY) => co(function*() {
+      ENTRY.isBeingRevoked = !!ENTRY.revoked_on;
+    }));
+
     // BR_G35
     yield iindex.map((ENTRY) => co(function*() {
       ENTRY.isBeingKicked = ENTRY.member === false;
@@ -525,7 +530,9 @@ const indexer = module.exports = {
 
     // BR_G36
     yield iindex.map((ENTRY) => co(function*() {
-      ENTRY.hasToBeExcluded = reduce(yield dal.iindexDAL.reducable(ENTRY.pub)).kick;
+      const isMarkedAsToKick = reduce(yield dal.iindexDAL.reducable(ENTRY.pub)).kick;
+      const isBeingRevoked = count(_.filter(mindex, (m) => m.isBeingRevoked && m.pub == ENTRY.pub)) == 1;
+      ENTRY.hasToBeExcluded = isMarkedAsToKick || isBeingRevoked;
     }));
 
     // BR_G22
@@ -634,11 +641,6 @@ const indexer = module.exports = {
       }
     }));
 
-    // BR_G34
-    yield mindex.map((ENTRY) => co(function*() {
-      ENTRY.isBeingRevoked = ENTRY.revoked;
-    }));
-
     // BR_G37
     yield indexer.prepareCertificationsAge(cindex, HEAD, HEAD_1, conf, dal);
 
@@ -1211,6 +1213,12 @@ const indexer = module.exports = {
         return false;
       }
     }
+    const beingKicked = _.filter(iindex, (i) => i.member === false);
+    for (const entry of beingKicked) {
+      if (!entry.hasToBeExcluded) {
+        return false;
+      }
+    }
   }),
 
   // BR_G103
diff --git a/doc/Protocol.md b/doc/Protocol.md
index eb3153f1ee8c28a86d8126ce82198bb5ae604b46..77df8b38b57b5f9b39a9d352299f442f2b123085 100644
--- a/doc/Protocol.md
+++ b/doc/Protocol.md
@@ -1936,7 +1936,7 @@ For each ENTRY in local MINDEX where `revoked_on != null`:
 
 For each ENTRY in local MINDEX where `revoked_on == null`:
 
-    ENTRY.isBeingRevoked = false 
+    ENTRY.isBeingRevoked = false
 
 For each ENTRY in local MINDEX where `revoked_on != null`:
 
@@ -2310,7 +2310,7 @@ Rule:
 
     ENTRY.excludedIsMember == true
     
-###### BR_G86 - Excluded to be kicked
+###### BR_G86 - Excluded contains exclatly those to be kicked
 
 Rule:
 
@@ -2321,6 +2321,12 @@ For each `REDUCE_BY(GLOBAL_IINDEX[kick=true], 'pub') as TO_KICK`:
 If `REDUCED.kick` then:
 
     COUNT(LOCAL_MINDEX[pub=REDUCED.pub,isBeingKicked=true]) == 1
+    
+Rule:
+
+For each `IINDEX[member=false] as ENTRY`:
+
+    ENTRY.hasToBeExcluded = true
 
 ###### BR_G103 - Trancation writability
 
diff --git a/package.json b/package.json
index 5e4afb9d4d3a2f0b7cb64a6a52264f099f051b01..f6d53d6f778b4224915cb99d90e867fed63e2409 100644
--- a/package.json
+++ b/package.json
@@ -46,7 +46,7 @@
     "duniter-common": "0.1.0",
     "duniter-crawler": "^0.2.10",
     "duniter-keypair": "^0.3.0",
-    "duniter-prover": "^0.2.6",
+    "duniter-prover": "^0.2.7",
     "event-stream": "3.3.4",
     "inquirer": "0.8.5",
     "jison": "0.4.17",
diff --git a/test/integration/identity-kicking-by-certs.js b/test/integration/identity-kicking-by-certs.js
index 54e63d134254668f4150e1c1b67fd63e015e51d6..928a4213fe9a60f15ff8b13963373771b1271350 100644
--- a/test/integration/identity-kicking-by-certs.js
+++ b/test/integration/identity-kicking-by-certs.js
@@ -3,6 +3,7 @@
 const _         = require('underscore');
 const co        = require('co');
 const assert    = require('assert');
+const should    = require('should');
 const duniter   = require('../../index');
 const bma       = require('duniter-bma').duniter.methods.bma;
 const user      = require('./tools/user');
@@ -63,10 +64,31 @@ describe("Identities kicking by certs", function() {
     yield s1.commit({ time: now + 8 });
     yield s1.commit({ time: now + 8 });
     yield s1.commit({ time: now + 8 });
+    yield cat.revoke();
+    let err;
+    try {
+      yield s1.commit({ time: now + 8, excluded: ['3conGDUXdrTGbQPMQQhEC4Ubu1MCAnFrAYvUaewbUhtk'] });
+    } catch (e) {
+      err = e;
+    }
+    should.exist(err);
+    should.deepEqual(JSON.parse(err.error), {
+      "ucode": 1002,
+      "message": "ruleToBeKickedArePresent"
+    });
     yield s1.commit({ time: now + 8 });
   }));
 
-  it('block#7 should have kicked 2 member', () => s1.expectThat('/blockchain/block/7', (res) => {
-    assert.equal(res.excluded.length, 2);
+  it('block#7 should have kicked 2 member', () => s1.expectJSON('/blockchain/block/7', (res) => {
+    assert.deepEqual(res.excluded, [
+      '2LvDg21dVXvetTD9GdkPLURavLYEqP3whauvPWX4c2qc',
+      'DKpQPUL4ckzXYdnDRvCRKAm1gNvSdmAXnTrJZ7LvM5Qo'
+    ]);
+  }));
+
+  it('block#8 should have kicked 1 member', () => s1.expectJSON('/blockchain/block/8', (res) => {
+    assert.deepEqual(res.excluded, [
+      'HgTTJLAQ5sqfknMq7yLPZbehtuLSsKj9CxWN7k8QvYJd'
+    ]);
   }));
 });