diff --git a/spec/trigo.spec.ts b/spec/trigo.spec.ts
index a7da7c6a3a15e854a6c7b89f6a489a0c2d31d997..e1e0ddbe3fbbfd7176fae851f6bdd408d72eae2c 100644
--- a/spec/trigo.spec.ts
+++ b/spec/trigo.spec.ts
@@ -173,4 +173,33 @@ describe("Class Trigo: ", () => {
         expect(trig.calculatedParam.symbol).toBe("Y");
     });
 
+    it ("definition domains depending on operation", () => {
+        const nub = new Trigo(new TrigoParams(1.5, 1));
+        nub.calculatedParam = nub.prms.Y;
+        nub.unit = TrigoUnit.RAD;
+        // RAD / COS (COS is default operation)
+        expect(nub.prms.Y.domain.interval.min).toBe(-1);
+        expect(nub.prms.Y.domain.interval.max).toBe(1);
+        // RAD / TAN
+        nub.operation = TrigoOperation.TAN;
+        expect(nub.prms.Y.domain.interval.min).toBe(-Infinity);
+        expect(nub.prms.Y.domain.interval.max).toBe(Infinity);
+        // RAD / SIN
+        nub.operation = TrigoOperation.SIN;
+        expect(nub.prms.Y.domain.interval.min).toBe(-1);
+        expect(nub.prms.Y.domain.interval.max).toBe(1);
+        // RAD / SINH
+        nub.operation = TrigoOperation.SINH;
+        expect(nub.prms.Y.domain.interval.min).toBe(-Infinity);
+        expect(nub.prms.Y.domain.interval.max).toBe(Infinity);
+        // RAD / TANH
+        nub.operation = TrigoOperation.TANH;
+        expect(nub.prms.Y.domain.interval.min).toBe(-0.99999999);
+        expect(nub.prms.Y.domain.interval.max).toBe(0.99999999);
+        // RAD / COSH
+        nub.operation = TrigoOperation.COSH;
+        expect(nub.prms.Y.domain.interval.min).toBe(1);
+        expect(nub.prms.Y.domain.interval.max).toBe(Infinity);
+    });
+
 });
diff --git a/src/trigo.ts b/src/trigo.ts
index 2b77a4a5470edb6fa91294de09bdffa6c7b5469b..25b4176f02af876d33f7bb6e641596f87d524f60 100644
--- a/src/trigo.ts
+++ b/src/trigo.ts
@@ -1,9 +1,8 @@
 import { CalculatorType } from "./compute-node";
 import { Nub } from "./nub";
 import { ParamCalculability } from "./param/param-definition";
-import { ParamDomainValue } from "./param/param-domain";
+import { ParamDomain, ParamDomainValue } from "./param/param-domain";
 import { TrigoParams } from "./trigo_params";
-import { Interval } from "./util/interval";
 import { Observer } from "./util/observer";
 import { Result } from "./util/result";
 
@@ -132,19 +131,18 @@ export class Trigo extends Nub implements Observer {
         if (data.action === "propertyChange") {
             switch (data.name) {
                 case "trigoOperation":
-                case "trigoUnit":
                     // adjust definition domains
                     const un = this.unit;
                     switch (this.operation) {
                         case TrigoOperation.COS:
                         case TrigoOperation.SIN:
                             // [-1,1]
-                            this.prms.Y.domain.interval.setInterval(new Interval(-1, 1));
+                            this.prms.Y.setDomain(new ParamDomain(ParamDomainValue.INTERVAL, -1, 1));
                             break;
                         case TrigoOperation.TANH:
                             // ]-1,1[
                             // @TODO manage boundaries exclusion in Interval
-                            this.prms.Y.domain.interval.setInterval(new Interval(-0.99999999, 0.99999999));
+                            this.prms.Y.setDomain(new ParamDomain(ParamDomainValue.INTERVAL, -0.99999999, 0.99999999));
                             break;
                         case TrigoOperation.TAN:
                         case TrigoOperation.SINH:
@@ -153,7 +151,7 @@ export class Trigo extends Nub implements Observer {
                             break;
                         case TrigoOperation.COSH:
                             // [1,+∞[
-                            this.prms.Y.domain.interval.setInterval(new Interval(1, Infinity));
+                            this.prms.Y.setDomain(new ParamDomain(ParamDomainValue.INTERVAL, 1, Infinity));
                             break;
                     }
                     break;