diff --git a/spec/pab/pab.spec.ts b/spec/pab/pab.spec.ts
index 6c2230772c37ad0500de607eddbda82809537524..77e42a1416c5c92e747f9edb7cb8593950e5742a 100644
--- a/spec/pab/pab.spec.ts
+++ b/spec/pab/pab.spec.ts
@@ -170,6 +170,7 @@ describe("Class Pab: ", () => {
             checkPabResults(pab, 0.773);
         });
     });
+
     describe("Vanne levante sur Cloison aval", () => {
         beforeEach( () => {
             pab = createPabTest();
@@ -199,4 +200,27 @@ describe("Class Pab: ", () => {
                 .toBe(MessageCode.ERROR_CLOISON_AVAL_UN_OUVRAGE_REGULE);
         });
     });
+
+    describe("when Z1 is too low compared to ZDV", () => {
+        it("logs should appear if dichotomy does not converge", () => {
+            pab.calculatedParam = pab.prms.Q;
+            pab.prms.Z1.singleValue = 78.26; // @WTF 78.27 in the example above works, 78.26 fails !
+            pab.CalcSerie();
+            expect(pab.result.hasLog).toBe(true);
+            expect(pab.result.resultElement.log.messages[0].code)
+                .toBe(MessageCode.ERROR_DICHO_CONVERGE); // @TODO or other error message ?
+        });
+    });
+
+    describe("variating Z1", () => {
+        it("logs should appear when Z1 < Z2", () => {
+            pab.calculatedParam = pab.prms.Q;
+            pab.prms.Z1.setValues(73, 85, 6);
+            pab.CalcSerie();
+            expect(pab.result.nbResultElements).toBe(3);
+            expect(pab.result.hasLog).toBe(true);
+            expect(pab.result.resultElements[0].log.messages[0].code).toBe(MessageCode.ERROR_Z1_LOWER_THAN_Z2);
+        });
+    });
+
 });
diff --git a/src/nub.ts b/src/nub.ts
index b98610d360c70053f8a78527f61e33c147151601..c7226fd0a7672581c6f4b0592b64ba3bc93dca5d 100644
--- a/src/nub.ts
+++ b/src/nub.ts
@@ -411,7 +411,6 @@ export abstract class Nub extends ComputeNode implements IObservable {
                 if (this._result.resultElement.ok) {
                     rInit = this._result.resultElement.vCalc;
                 }
-                this._result.globalLog.addLog(this._result.globalLog);
                 // update progress
                 this.progress += progressStep;
             }
diff --git a/src/pab/pab.ts b/src/pab/pab.ts
index c749ae30a0f4f5b87555234ca75565c15c2d1d12..78537edb08f4ba23cdb17917d52c1d26a50250f2 100644
--- a/src/pab/pab.ts
+++ b/src/pab/pab.ts
@@ -110,6 +110,10 @@ export class Pab extends Nub {
             this.currentResult = new Result(new Message(MessageCode.ERROR_CLOISON_AVAL_UN_OUVRAGE_REGULE));
             return this.result;
         }
+        if (sVarCalc === "Q" && this.prms.Z1.v < this.prms.Z2.v) {
+            this.currentResult = new Result(new Message(MessageCode.ERROR_Z1_LOWER_THAN_Z2));
+            return this.result;
+        }
         return super.Calc(sVarCalc, rInit);
     }
 
diff --git a/src/util/message.ts b/src/util/message.ts
index 4c2778db457e6b4d2a186cb5f928fe988c7b6094..ace85e54b0767161ecc60d478faec774d7c5b970 100644
--- a/src/util/message.ts
+++ b/src/util/message.ts
@@ -118,6 +118,11 @@ export enum MessageCode {
      */
     ERROR_CLOISON_AVAL_UN_OUVRAGE_REGULE,
 
+    /**
+     * La cote amont est plus basse que la cote aval
+     */
+    ERROR_Z1_LOWER_THAN_Z2,
+
     /**
      * internationalisation : langue non prise en charge
      */