diff --git a/spec/iterator/paramvalues_iterator.spec.ts b/spec/iterator/paramvalues_iterator.spec.ts
index 9bfa898de4e237b2d914a87b7effa3d8ab2d56c3..672cb1342c00a1fa19ef2efc94d56cced8bbdf20 100644
--- a/spec/iterator/paramvalues_iterator.spec.ts
+++ b/spec/iterator/paramvalues_iterator.spec.ts
@@ -1,8 +1,8 @@
 import { ParamValues } from "../../src/param/param-values"
-import { ParamValueIterator } from "../../src/param/param-value-iterator";
+import { NumberIterator } from "../../src/param/param-value-iterator";
 import { ParamValueMode } from "../../src/param/param-value-mode";
 
-function checkNumberList(it: ParamValueIterator, exp: number[]) {
+function checkNumberList(it: NumberIterator, exp: number[]) {
     let n = 0;
     for (const v of it) {
         expect(v).toEqual(exp[n]);
diff --git a/src/nub.ts b/src/nub.ts
index 76c66022b9b7a5070b85cd230726847af6f56898..d5f0bb782a8c4e072a204bec90030a44daa4f6c8 100644
--- a/src/nub.ts
+++ b/src/nub.ts
@@ -207,7 +207,7 @@ export abstract class Nub extends ComputeNode implements IReferencedNub {
         return r.getExtraResult(tmp[1]);
     }
 
-    public getReferencedValuesIterator(desc: string): IterableIterator<number> {
+    public getReferencedValuesIterator(desc: string): NumberIterator {
         const tmp = desc.split(".");
 
         if (tmp.length > 1 && tmp[1] === "")
diff --git a/src/param/param-base.ts b/src/param/param-base.ts
index 7c40e9dd1db3e030160a45970603410fc28ab75f..394d44461413b76201835dffb750187c499c3fdf 100644
--- a/src/param/param-base.ts
+++ b/src/param/param-base.ts
@@ -7,7 +7,7 @@ import { ParamValues } from "./param-values";
 import { ParamValueMode } from "./param-value-mode";
 import { IReferencedNub, INubReference } from "../value_ref/object_ref";
 import { Result } from "../util/result";
-import { NamedIterableValues } from "./param-value-iterator";
+import { NamedIterableValues, NumberIterator } from "./param-value-iterator";
 import { IObservable, Observable, Observer } from "../util/observer";
 
 /**
@@ -338,7 +338,7 @@ export class BaseParam extends JalhydObject implements INubReference, NamedItera
         return this._paramValues.referencedExtraResult;
     }
 
-    public get referencedValuesIterator(): IterableIterator<number> {
+    public get referencedValuesIterator(): NumberIterator {
         return this._paramValues.referencedValuesIterator;
     }
 
@@ -348,7 +348,7 @@ export class BaseParam extends JalhydObject implements INubReference, NamedItera
 
     // interface NamedIterableValues
 
-    public get valuesIterator(): IterableIterator<number> {
+    public get valuesIterator(): NumberIterator {
         if (this.isReferenceDefined)
             return this.referencedValuesIterator;
         return this._paramValues.valuesIterator;
diff --git a/src/param/param-value-iterator.ts b/src/param/param-value-iterator.ts
index b94e3095cfe13f5a13d34580c5a86afa739677ad..c5f05fcbf12acf15c3e56c4129a5823c4fe7578d 100644
--- a/src/param/param-value-iterator.ts
+++ b/src/param/param-value-iterator.ts
@@ -2,6 +2,21 @@ import { ParamValues } from "./param-values";
 import { ParamValueMode } from "./param-value-mode";
 import { INamedObject } from "../jalhyd_object";
 
+/**
+ * itérateur sur des nombres
+ */
+export interface NumberIterator extends IterableIterator<number> {
+    /**
+     * @return true si il reste des valeurs à parcourir
+     */
+    readonly hasNext: boolean;
+
+    /**
+     * prochaine valeur
+     */
+    next(): IteratorResult<number>;
+}
+
 /**
  * interface implémentée par les objets pouvant renvoyer un itérateur sur une série de valeurs numériques
  */
@@ -9,7 +24,7 @@ export interface IterableValues {
     /**
      * itérateur sur les valeurs
      */
-    readonly valuesIterator: IterableIterator<number>;
+    readonly valuesIterator: NumberIterator;
 
     /**
      * true si la série de valeurs a plus d'une valeur
@@ -26,7 +41,7 @@ export interface NamedIterableValues extends INamedObject, IterableValues {
 /**
  * itérateur sur les (ou la) valeurs prises par un ParamValues
  */
-export class ParamValueIterator implements IterableIterator<number> {
+export class ParamValueIterator implements NumberIterator {
     /**
      * paramètre à itérer
      */
diff --git a/src/param/param-values.ts b/src/param/param-values.ts
index 345206b665a8d8b00b4aa73e0ebccde9cddffe20..6f424e885d5da276a395e113fd865a1d94d4b105 100644
--- a/src/param/param-values.ts
+++ b/src/param/param-values.ts
@@ -44,7 +44,7 @@ export class ParamValues implements INubReference, IterableValues {
     /**
      * itérateur courant
      */
-    private _iterator: ParamValueIterator;
+    private _iterator: NumberIterator;
 
     /**
      * implémentation par délégation de INubReference
@@ -237,7 +237,7 @@ export class ParamValues implements INubReference, IterableValues {
      * crée un ParamValueIterator
      * @param reverse true si on veut itérer max->min ou depuis la fin de la liste
      */
-    public getValuesIterator(reverse: boolean = false): ParamValueIterator {
+    public getValuesIterator(reverse: boolean = false): NumberIterator {
         return new ParamValueIterator(this, reverse);
     }
 
@@ -324,7 +324,7 @@ export class ParamValues implements INubReference, IterableValues {
 
     // interface IterableValues
 
-    public get valuesIterator(): IterableIterator<number> {
+    public get valuesIterator(): NumberIterator {
         return this.getValuesIterator();
     }
 
diff --git a/src/util/result.ts b/src/util/result.ts
index 5fce944905314b95d71e04578a3183a92ab11e5c..6c4ac03d06b95d66e157aa39a5b004242b653ba0 100644
--- a/src/util/result.ts
+++ b/src/util/result.ts
@@ -2,7 +2,7 @@ import { cLog } from "./log";
 import { Message, MessageCode, MessageSeverity } from "./message";
 import { ResultElement } from "./resultelement";
 import { JalhydObject } from "../jalhyd_object";
-import { NamedIterableValues } from "../param/param-value-iterator";
+import { NamedIterableValues, NumberIterator } from "../param/param-value-iterator";
 
 /**
  * Résultat global d'un calcul
@@ -266,11 +266,11 @@ export class Result extends JalhydObject implements NamedIterableValues {
         return this._name;
     }
 
-    public get valuesIterator(): IterableIterator<number> {
+    public get valuesIterator(): NumberIterator {
         const tmp: number[] = [];
         for (const re of this._resultElements)
             tmp.push(re.vCalc);
-        return tmp[Symbol.iterator]();
+        return tmp[Symbol.iterator]() as NumberIterator;
     }
 
     public get hasMultipleValues(): boolean {
@@ -318,8 +318,8 @@ export class ExtraResults extends JalhydObject implements NamedIterableValues {
 
     // interface NamedIterableValues
 
-    public get valuesIterator(): IterableIterator<number> {
-        return this._values[Symbol.iterator]();
+    public get valuesIterator(): NumberIterator {
+        return this._values[Symbol.iterator]() as NumberIterator;
     }
 
     public get hasMultipleValues(): boolean {
diff --git a/src/value_ref/object_ref.ts b/src/value_ref/object_ref.ts
index 2eb60396c8a13eeb78785ba878629ca510bf07aa..0db46b1dc7b5a48d4191f14d38f74c8d44ea2d89 100644
--- a/src/value_ref/object_ref.ts
+++ b/src/value_ref/object_ref.ts
@@ -29,7 +29,7 @@ export interface IReferencedNub {
     /**
      * itérateur sur les valeurs
      */
-    getReferencedValuesIterator(desc: string): IterableIterator<number>;
+    getReferencedValuesIterator(desc: string): NumberIterator;
 
     /**
      * objet (paramètre/résultat/résultat complémentaire) référencé
@@ -81,7 +81,7 @@ export interface INubReference {
     /**
      * itérateur sur les valeurs référencées
      */
-    readonly referencedValuesIterator: IterableIterator<number>;
+    readonly referencedValuesIterator: NumberIterator;
 
     /**
      * objet (paramètre/résultat/résultat complémentaire) référencé
@@ -158,7 +158,7 @@ export class NubReference implements INubReference {
     /**
      * itérateur sur les valeurs référencées
      */
-    public get referencedValuesIterator(): IterableIterator<number> {
+    public get referencedValuesIterator(): NumberIterator {
         return this._referencedNub.getReferencedValuesIterator(this._refDefinition);
     }