diff --git a/src/app/components/remous-results/remous-results.component.ts b/src/app/components/remous-results/remous-results.component.ts
index bfb0da761e155108b502566fec4a202f47037214..ab9f3f71800041e327cad3c6cec6cc8e0ef655db 100644
--- a/src/app/components/remous-results/remous-results.component.ts
+++ b/src/app/components/remous-results/remous-results.component.ts
@@ -1,6 +1,6 @@
 import { Component, ViewChild, DoCheck } from "@angular/core";
 
-import { ArrayReverseIterator, ResultElement, INumberIterator, CourbeRemousParams, CourbeRemous } from "jalhyd";
+import { INumberIterator, CourbeRemousParams, CourbeRemous } from "jalhyd";
 
 import { I18nService } from "../../services/internationalisation.service";
 import { LogComponent } from "../../components/log/log.component";
@@ -398,61 +398,25 @@ export class RemousResultsComponent extends ResultsComponent implements DoCheck
 
     private connectRessaut(lineFlu: LineData, lineTor: LineData) {
         if (lineFlu !== undefined && lineTor !== undefined) {
-            const tX = lineFlu.tx.slice(0); // copie
-
-            tX.sort((a, b) => {
-                if (a > b) {
-                    return 1;
-                }
-                if (a < b) {
-                    return -1;
-                }
-                return 0;
-            });
-
-            let minXflu; // abscisse de début de la courbe fluviale
-            let itX = this.abscisseIterator;
-            for (const re of this._remousResults.result.resultElements) {
-                if (!itX.hasNext) {
-                    throw new Error("RemousResultsComponent.connectRessaut() : erreur interne (itérateur sur x)");
-                }
-                const x = itX.next().value;
-                if (re.getValue("flu") !== undefined) {
-                    minXflu = x;
-                    break;
+            const p = this._remousResults.varResults.variatedParameters[0].paramDefinition;
+            const xs = p.getInferredValuesList();
+            // 1e passe : prolonger la torrentielle
+            outerloop1:
+            for (let i = 0; i < xs.length; i++) {
+                const x = xs[i];
+                if (lineTor.getYat(x) === null) {
+                    lineTor.setPoint(x, lineFlu.getYat(x));
+                    break outerloop1;
                 }
             }
-
-            if (minXflu !== undefined && minXflu !== tX[0]) {
-                // la courbe fluviale ne démarre pas au début, on ajoute un point de raccord avec la ligne torrentielle
-
-                const i = tX.indexOf(minXflu);
-                const xflu = tX[i - 1];
-                const yflu = lineTor.getYat(xflu);
-                lineFlu.setPoint(xflu, yflu);
-            }
-
-            let maxXtor; // abscisse de fin de la courbe torrentielle
-            const itRE = new ArrayReverseIterator<ResultElement>(this._remousResults.result.resultElements);
-            itX = this.abscisseIterator;
-            for (const r of itRE) {
-                if (!itX.hasNext) {
-                    throw new Error("RemousResultsComponent.connectRessaut() : erreur interne (itérateur sur x)");
+            // 2e passe : prolonger la fluviale
+            outerloop2:
+            for (let i = xs.length - 1; i >= 0; i--) {
+                const x = xs[i];
+                if (lineFlu.getYat(x) === null) {
+                    lineFlu.setPoint(x, lineTor.getYat(x));
+                    break outerloop2;
                 }
-                const x = itX.next();
-                if (r.getValue("tor") !== undefined) {
-                    maxXtor = x.value;
-                    break;
-                }
-            }
-
-            if (maxXtor !== undefined && maxXtor !== tX[tX.length - 1]) {
-                // la courbe torrentielle ne finit pas à la fin des abscisses, on ajoute un point de raccord avec la ligne fluviale
-
-                const i = tX.indexOf(maxXtor);
-                const xflu = tX[i + 1];
-                const yflu = lineFlu.getYat(xflu);
-                lineTor.setPoint(xflu, yflu);
             }
         }
     }
@@ -523,7 +487,6 @@ export class RemousResultsComponent extends ResultsComponent implements DoCheck
         }
 
         // lignes d'eau torrentielle et fluviale
-
         let lineFlu: LineData;
         if (this._remousResults.hasFluData) {
             lineFlu = gr1.newLine(0);
@@ -579,11 +542,9 @@ export class RemousResultsComponent extends ResultsComponent implements DoCheck
         }
 
         // raccordement ligne fluviale -> torrentielle pour dessiner le ressaut
-
         this.connectRessaut(lineFlu, lineTor);
 
         // ajout des données au graphique
-
         if (lineTor !== undefined) {
             lineTor.data = {
                 label: this.uitextLigneTorrentielle,
diff --git a/src/app/results/remous-results.ts b/src/app/results/remous-results.ts
index ba7c03a9590464f90bbcbcefe1274d3766abfec0..60b6b6a7485ac3244311042a9fdb2b532b615b6a 100644
--- a/src/app/results/remous-results.ts
+++ b/src/app/results/remous-results.ts
@@ -98,7 +98,7 @@ export class RemousResults extends CalculatorResults {
 
         // série de valeurs de X
         this._xValues = new ParamDefinition(p, "Abscisse", ParamDomainValue.POS_NULL);
-        this._xValues.paramValues.setValues(0, Long, Dx);
+        this._xValues.setValues(0, Long, Dx);
     }
 
     public get log() {