diff --git a/app/lib/dal/fileDAL.ts b/app/lib/dal/fileDAL.ts
index 5d5ca436742f1c2746e980bf6438781af8086a73..2cbd5d10251ee0aa6d505b3e3cb196951ed9f88f 100644
--- a/app/lib/dal/fileDAL.ts
+++ b/app/lib/dal/fileDAL.ts
@@ -519,9 +519,19 @@ export class FileDAL {
       .value()
   }
 
-  async findLeavers() {
-    const mss = await this.msDAL.getPendingOUT();
-    return _.chain(mss).sortBy((ms:any) => -ms.sigDate).value();
+  async findLeavers(blockMedianTime = 0) {
+    const pending = await this.msDAL.getPendingOUT();
+    const mss = await Promise.all(pending.map(async (p:any) => {
+      const reduced = await this.mindexDAL.getReducedMS(p.issuer)
+      if (!reduced || !reduced.chainable_on || blockMedianTime >= reduced.chainable_on || blockMedianTime < constants.TIME_TO_TURN_ON_BRG_107) {
+        return p
+      }
+      return null
+    }))
+    return _.chain(mss)
+      .filter((ms:any) => ms)
+      .sortBy((ms:any) => -ms.sigDate)
+      .value();
   }
 
   existsNonReplayableLink(from:string, to:string) {
diff --git a/app/modules/prover/lib/blockGenerator.ts b/app/modules/prover/lib/blockGenerator.ts
index 48ab6db8e663bab72e59959b29c55b3aa045387e..0608a1b0291cf4a55bfdd239770aa9d9e374e265 100644
--- a/app/modules/prover/lib/blockGenerator.ts
+++ b/app/modules/prover/lib/blockGenerator.ts
@@ -151,7 +151,7 @@ export class BlockGenerator {
 
   private async findLeavers(current:DBBlock) {
     const leaveData: { [pub:string]: any } = {};
-    const memberships = await this.dal.findLeavers();
+    const memberships = await this.dal.findLeavers(current && current.medianTime);
     const leavers:string[] = [];
     memberships.forEach((ms:any) => leavers.push(ms.issuer));
     for (const ms of memberships) {