diff --git a/etudes/abattement_pensions/abattement_pensions.ml b/etudes/abattement_pensions/abattement_pensions.ml
index 6a284299d839e1e1c9f95096a371770852b109c8..23b9b85e831f0662d6adb35a601c010eefb22b8b 100644
--- a/etudes/abattement_pensions/abattement_pensions.ml
+++ b/etudes/abattement_pensions/abattement_pensions.ml
@@ -21,6 +21,14 @@ module CalculNaifDroit = struct
     let abattement =
       R.Oper.o_mult_mon_rat d.pensions
         (R.Oper.o_div_rat_rat
+           {
+             filename = "dummy.catala_fr";
+             start_line = 0;
+             start_column = 0;
+             end_line = 0;
+             end_column = 0;
+             law_headings = [];
+           }
            (R.decimal_of_integer (R.integer_of_int 1))
            (R.decimal_of_integer (R.integer_of_int 10)))
     in
@@ -64,8 +72,16 @@ module CalculPlafondProratisePartoutVersionM2015 = struct
             then R.money_of_units_int 0
             else
               R.Oper.o_mult_mon_rat plafond_abattement
-                (R.Oper.o_div_mon_mon abattement_deplafonne
-                   abattement_total_deplafonne)
+                (R.Oper.o_div_mon_mon
+                   {
+                     filename = "dummy.catala_fr";
+                     start_line = 0;
+                     start_column = 0;
+                     end_line = 0;
+                     end_column = 0;
+                     law_headings = [];
+                   }
+                   abattement_deplafonne abattement_total_deplafonne)
           in
           R.money_round
             (if R.Oper.o_gt_mon_mon abattement_deplafonne plafond_proratise then
@@ -145,8 +161,16 @@ module CalculPlafondProratiseNonPlancherVersionM2015 = struct
                  then R.money_of_units_int 0
                  else
                    R.Oper.o_mult_mon_rat plafond_a_repartir
-                     (R.Oper.o_div_mon_mon abattement_deplafonne
-                        abattement_total_non_au_plancher)
+                     (R.Oper.o_div_mon_mon
+                        {
+                          filename = "dummy.catala_fr";
+                          start_line = 0;
+                          start_column = 0;
+                          end_line = 0;
+                          end_column = 0;
+                          law_headings = [];
+                        }
+                        abattement_deplafonne abattement_total_non_au_plancher)
                in
                if R.Oper.o_gt_mon_mon abattement_deplafonne plafond_proratise
                then plafond_proratise
@@ -186,6 +210,14 @@ module CalculPlafondProratiseNonPlancherVersionM2022 = struct
       R.money_round
         (R.Oper.o_mult_mon_rat d.pensions
            (R.Oper.o_div_rat_rat
+              {
+                filename = "dummy.catala_fr";
+                start_line = 0;
+                start_column = 0;
+                end_line = 0;
+                end_column = 0;
+                law_headings = [];
+              }
               (R.decimal_of_integer (R.integer_of_int 1))
               (R.decimal_of_integer (R.integer_of_int 10))))
     in
@@ -269,7 +301,16 @@ module CalculPlafondProratiseNonPlancherVersionM2022 = struct
                           then R.money_of_units_int 0
                           else
                             R.Oper.o_mult_mon_rat plafond_a_repartir
-                              (R.Oper.o_div_mon_mon abattement_deplafonne
+                              (R.Oper.o_div_mon_mon
+                                 {
+                                   filename = "dummy.catala_fr";
+                                   start_line = 0;
+                                   start_column = 0;
+                                   end_line = 0;
+                                   end_column = 0;
+                                   law_headings = [];
+                                 }
+                                 abattement_deplafonne
                                  abattement_total_non_au_plancher)
                         in
                         if
diff --git a/etudes/verification_prorata/verification_prorata.ml b/etudes/verification_prorata/verification_prorata.ml
index b2c946e46b0a4353a58c58d02615d47dc8233746..c53a52a538bed4795bce67458494d3986cf4571d 100644
--- a/etudes/verification_prorata/verification_prorata.ml
+++ b/etudes/verification_prorata/verification_prorata.ml
@@ -31,11 +31,20 @@ let print_prorata_input (i : Oracles.ProRataArrondiEuro_in.t) : string =
             try
               o_mult_rat_rat
                 (R.decimal_of_money i.montant_a_distribuer_in)
-                (o_div_rat_rat (R.decimal_of_money base)
+                (o_div_rat_rat
+                   {
+                     filename = "dummy.catala_fr";
+                     start_line = 0;
+                     start_column = 0;
+                     end_line = 0;
+                     end_column = 0;
+                     law_headings = [];
+                   }
+                   (R.decimal_of_money base)
                    (R.decimal_of_money
                       (Array.fold_left R.Oper.o_add_mon_mon
                          (R.money_of_units_int 0) i.bases_prorata_in)))
-            with R.Division_by_zero -> R.decimal_of_float 0.0
+            with R.Error (R.DivisionByZero, _) -> R.decimal_of_float 0.0
           in
           R.money_of_decimal @@ R.decimal_round brut)
       i.bases_prorata_in
@@ -116,7 +125,16 @@ let t2 =
               let brut =
                 o_mult_rat_rat
                   (R.decimal_of_money prorata_input.montant_a_distribuer_in)
-                  (o_div_rat_rat (R.decimal_of_money base)
+                  (o_div_rat_rat
+                     {
+                       filename = "dummy.catala_fr";
+                       start_line = 0;
+                       start_column = 0;
+                       end_line = 0;
+                       end_column = 0;
+                       law_headings = [];
+                     }
+                     (R.decimal_of_money base)
                      (R.decimal_of_money total_bases))
               in
               R.money_of_decimal @@ R.decimal_round brut)
@@ -143,9 +161,18 @@ let t3 =
                 try
                   o_mult_rat_rat
                     (R.decimal_of_money prorata_input.montant_a_distribuer_in)
-                    (o_div_rat_rat (R.decimal_of_money base)
+                    (o_div_rat_rat
+                       {
+                         filename = "dummy.catala_fr";
+                         start_line = 0;
+                         start_column = 0;
+                         end_line = 0;
+                         end_column = 0;
+                         law_headings = [];
+                       }
+                       (R.decimal_of_money base)
                        (R.decimal_of_money total_bases))
-                with R.Division_by_zero -> R.decimal_of_float 0.0
+                with R.Error (R.DivisionByZero, _) -> R.decimal_of_float 0.0
               in
               R.money_of_decimal @@ R.decimal_round brut)
           prorata_input.bases_prorata_in
diff --git a/sources/cgi_revenus.catala_fr b/sources/cgi_revenus.catala_fr
index c4e3e8f0157084c2a882fdacdeffbcd774f4d2f2..2bc4a1ffb521c7029ee454f7872019dac0247b51 100644
--- a/sources/cgi_revenus.catala_fr
+++ b/sources/cgi_revenus.catala_fr
@@ -225,6 +225,43 @@ ces dispositions s'appliquent aux cessions réalisées à compter du 1er janvier
 
 ######## II : Bénéfices industriels et commerciaux
 
+######### 1 : Définition des bénéfices industriels et commerciaux
+
+########## Article 34 | LEGIARTI000024188625
+
+Sont considérés comme bénéfices industriels et commerciaux, pour l'application
+de l'impôt sur le revenu, les bénéfices réalisés par des personnes physiques et
+provenant de l'exercice d'une profession commerciale, industrielle ou
+artisanale.
+
+Il en est de même, dans les mêmes conditions, des bénéfices réalisés par les
+concessionnaires de mines, par les amodiataires et sous-amodiataires de
+concessions minières, par les titulaires de permis d'exploitation de mines et
+par les explorateurs de mines de pétrole et de gaz combustibles.
+
+Par exception aux dispositions du premier alinéa, sont classés dans la catégorie
+des salaires les revenus correspondant aux rémunérations dites " à la part "
+perçues au titre de leur travail personnel par les artisans pêcheurs, ainsi que,
+lorsqu'ils sont embarqués, par le ou les pêcheurs associés d'une société de
+pêche artisanale, telle que définie à l'article L. 931-2 du code rural et de la
+pêche maritime et soumise au régime d'imposition prévu à l'article 8.
+
+NOTA :
+
+Modification effectuée en conséquence des articles 1er, 4 et 7 de l'ordonnance
+n° 2010-462 du 6 mai 2010.
+
+```catala
+champ d'application BénéficesIndustrielsCommerciauxDéclarant:
+  définition solde_net_professionnel état revenus_imposables_réel égal à
+    revenus.professionnels.revenus_imposables_réel
+    - revenus.professionnels.déficit_réel
+
+  définition solde_net_non_professionnel état revenus_imposables_réel égal à
+    revenus.non_professionnels.revenus_imposables_réel
+    - revenus.non_professionnels.déficit_réel
+```
+
 ######### 2 : Détermination des bénéfices imposables
 
 ########## Article 39 quaterdecies | LEGIARTI000046860376
@@ -328,6 +365,27 @@ d'un exercice est déduit des bénéfices de cet exercice.
 champ d'application PlusMoinsValueCourtTermeBénéficesIndustrielsCommerciaux:
   définition solde_net égal à
     plus_values_nettes - moins_values_nettes
+
+champ d'application BénéficesIndustrielsCommerciauxDéclarant:
+  définition solde_net_professionnel état plus_moins_value_court_terme_micro
+  égal à
+    solde_net_professionnel +
+    (résultat de PlusMoinsValueCourtTermeBénéficesIndustrielsCommerciaux avec {
+      -- plus_values_nettes:
+        revenus.professionnels.plus_values_nettes_court_terme_micro
+      -- moins_values_nettes:
+        revenus.professionnels.moins_values_nettes_court_terme_micro
+    }).solde_net
+
+  définition solde_net_non_professionnel état plus_moins_value_court_terme_micro
+  égal à
+    solde_net_non_professionnel +
+    (résultat de PlusMoinsValueCourtTermeBénéficesIndustrielsCommerciaux avec {
+      -- plus_values_nettes:
+        revenus.non_professionnels.plus_values_nettes_court_terme_micro
+      -- moins_values_nettes:
+        revenus.non_professionnels.moins_values_nettes_court_terme_micro
+    }).solde_net
 ```
 
 ########## Article 39 quindecies | LEGIARTI000036428314
@@ -354,11 +412,11 @@ champ d'application BénéficesIndustrielsCommerciauxDéclarant:
     (résultat de
       PrélèvementPlusMoinsValueLongTermeBénéficesIndustrielsCommerciaux avec {
       -- plus_values_nettes:
-        revenus_professionnels.plus_values_nettes_long_terme_micro +
-        revenus_non_professionnels.plus_values_nettes_long_terme_micro
+        revenus.professionnels.plus_values_nettes_long_terme_micro +
+        revenus.non_professionnels.plus_values_nettes_long_terme_micro
       -- moins_values_nettes:
-        revenus_professionnels.moins_values_nettes_long_terme_micro +
-        revenus_non_professionnels.moins_values_nettes_long_terme_micro
+        revenus.professionnels.moins_values_nettes_long_terme_micro +
+        revenus.non_professionnels.moins_values_nettes_long_terme_micro
     }).prélèvement_libératoire +
     # En régime réel, d'après le premier alinéa du I de l'article 93 du CGI,
     # les plus-values nettes à court terme sont comprises dans le revenu
@@ -367,8 +425,8 @@ champ d'application BénéficesIndustrielsCommerciauxDéclarant:
     (résultat de
       PrélèvementPlusMoinsValueLongTermeBénéficesIndustrielsCommerciaux avec {
       -- plus_values_nettes:
-        revenus_non_professionnels.plus_values_nettes_long_terme_réel +
-        revenus_professionnels.plus_values_nettes_long_terme_réel
+        revenus.non_professionnels.plus_values_nettes_long_terme_réel +
+        revenus.professionnels.plus_values_nettes_long_terme_réel
       -- moins_values_nettes: 0 €
     }).prélèvement_libératoire
 
@@ -660,34 +718,34 @@ champ d'application BénéficesIndustrielsCommerciauxDéclarant:
   # exister des revenus micro-BIC exceptionnels ou différés et donc soumis au
   # quotient.
   définition asiette_abattement_forfaitaire_micro_marchandises égal à
-    revenus_professionnels.revenus_imposables_micro_marchandises +
+    revenus.professionnels.revenus_imposables_micro_marchandises +
     (somme argent de (selon revenu_exceptionnel_ou_différé.catégorie sous forme
       -- MicroBénéficesIndustrielsCommerciauxMarchandises:
         revenu_exceptionnel_ou_différé.valeur
       -- n'importe quel: 0 €)
       pour revenu_exceptionnel_ou_différé parmi
-        revenus_professionnels.revenus_exceptionnels_ou_différés) +
-    revenus_non_professionnels.revenus_imposables_micro_marchandises +
+        revenus.professionnels.revenus_exceptionnels_ou_différés) +
+    revenus.non_professionnels.revenus_imposables_micro_marchandises +
     somme argent de (selon revenu_exceptionnel_ou_différé.catégorie sous forme
       -- MicroBénéficesIndustrielsCommerciauxMarchandises: revenu_exceptionnel_ou_différé.valeur
       -- n'importe quel: 0 €)
       pour revenu_exceptionnel_ou_différé parmi
-        revenus_non_professionnels.revenus_exceptionnels_ou_différés
+        revenus.non_professionnels.revenus_exceptionnels_ou_différés
 
   définition asiette_abattement_forfaitaire_micro_services égal à
-    revenus_professionnels.revenus_imposables_micro_services +
+    revenus.professionnels.revenus_imposables_micro_services +
     (somme argent de (selon revenu_exceptionnel_ou_différé.catégorie sous forme
       -- MicroBénéficesIndustrielsCommerciauxServices:
         revenu_exceptionnel_ou_différé.valeur
       -- n'importe quel: 0 €)
       pour revenu_exceptionnel_ou_différé parmi
-        revenus_professionnels.revenus_exceptionnels_ou_différés) +
-    revenus_non_professionnels.revenus_imposables_micro_services +
+        revenus.professionnels.revenus_exceptionnels_ou_différés) +
+    revenus.non_professionnels.revenus_imposables_micro_services +
     somme argent de (selon revenu_exceptionnel_ou_différé.catégorie sous forme
       -- MicroBénéficesIndustrielsCommerciauxServices: revenu_exceptionnel_ou_différé.valeur
       -- n'importe quel: 0 €)
       pour revenu_exceptionnel_ou_différé parmi
-        revenus_non_professionnels.revenus_exceptionnels_ou_différés
+        revenus.non_professionnels.revenus_exceptionnels_ou_différés
 
   définition abattement_forfaitaire_micro_total_marchandises état base égal à
      asiette_abattement_forfaitaire_micro_marchandises * 71%
@@ -732,7 +790,7 @@ champ d'application BénéficesIndustrielsCommerciauxDéclarant:
       -- année_revenu: année_revenu
     }).revenu_quotienté)
     pour revenu parmi
-      revenus_professionnels.revenus_exceptionnels_ou_différés
+      revenus.professionnels.revenus_exceptionnels_ou_différés
 
   définition revenus_quotientés_non_professionnels égal à
     (soit déduction égal à
@@ -753,13 +811,13 @@ champ d'application BénéficesIndustrielsCommerciauxDéclarant:
       -- année_revenu: année_revenu
     }).revenu_quotienté)
     pour revenu parmi
-      revenus_non_professionnels.revenus_exceptionnels_ou_différés
+      revenus.non_professionnels.revenus_exceptionnels_ou_différés
 
   définition abattement_forfaitaire_micro_professionnel_marchandises égal à
     # Ici on code à la main un pro-rata vers les deux catégories dont
     # sont issues l'abattement.
     arrondi de (abattement_forfaitaire_micro_total_marchandises *
-      (revenus_professionnels.revenus_imposables_micro_marchandises /
+      (revenus.professionnels.revenus_imposables_micro_marchandises /
         asiette_abattement_forfaitaire_micro_marchandises))
 
   définition abattement_forfaitaire_micro_non_professionnel_marchandises égal à
@@ -781,7 +839,7 @@ champ d'application BénéficesIndustrielsCommerciauxDéclarant:
     # Ici on code à la main un pro-rata vers les deux catégories dont
     # sont issues l'abattement.
     arrondi de (abattement_forfaitaire_micro_total_services *
-      (revenus_professionnels.revenus_imposables_micro_services /
+      (revenus.professionnels.revenus_imposables_micro_services /
         asiette_abattement_forfaitaire_micro_services))
 
   définition abattement_forfaitaire_micro_non_professionnel_services égal à
@@ -798,6 +856,20 @@ champ d'application BénéficesIndustrielsCommerciauxDéclarant:
         revenu_quotienté.déduction
       -- n'importe quel: 0 €)
     pour revenu_quotienté parmi revenus_quotientés_professionnels)
+
+  définition solde_net_professionnel état revenus_imposables_micro égal à
+    solde_net_professionnel
+    + revenus.professionnels.revenus_imposables_micro_marchandises
+    - abattement_forfaitaire_micro_professionnel_marchandises
+    + revenus.professionnels.revenus_imposables_micro_services
+    - abattement_forfaitaire_micro_professionnel_services
+
+  définition solde_net_non_professionnel état revenus_imposables_micro égal à
+    solde_net_non_professionnel
+    + revenus.non_professionnels.revenus_imposables_micro_marchandises
+    - abattement_forfaitaire_micro_non_professionnel_marchandises
+    + revenus.non_professionnels.revenus_imposables_micro_services
+    - abattement_forfaitaire_micro_non_professionnel_services
 ```
 
 Les plus ou moins-values mentionnées au cinquième alinéa sont déterminées et
@@ -2556,9 +2628,12 @@ champ d'application BénéficesNonCommerciauxDéclarant:
   définition abattement_forfaitaire_micro_professionnel égal à
     # Ici on code à la main un pro-rata vers les deux catégories dont
     # sont issues l'abattement.
-    arrondi de (abattement_forfaitaire_micro_total *
-      (revenus.professionnels.généraux.revenus_imposables_micro /
-        asiette_abattement_forfaitaire_micro_total))
+    si asiette_abattement_forfaitaire_micro_total = 0 € alors
+      0 €
+    sinon
+      arrondi de (abattement_forfaitaire_micro_total *
+        (revenus.professionnels.généraux.revenus_imposables_micro /
+          asiette_abattement_forfaitaire_micro_total))
 
   définition abattement_forfaitaire_micro_non_professionnel égal à
     # Il reste donc ici le solde.
@@ -2721,8 +2796,9 @@ champ d'application BénéficesIndustrielsCommerciauxDéclarant:
   sous condition
     année_revenu = 2022
   conséquence égal à
-    chiffre_affaires_prélèvement_libératoire_marchandises_éxonéré_cotisations *
-      1,0%
+    revenus.
+      chiffre_affaires_prélèvement_libératoire_marchandises_éxonéré_cotisations
+      * 1,0%
 ```
 
 2° 1,7 % pour les contribuables soumis au régime défini à l'article 50-0 et
@@ -2734,7 +2810,8 @@ champ d'application BénéficesIndustrielsCommerciauxDéclarant:
     année_revenu = 2022
   conséquence égal à
     prélèvement_libératoire_auto_entreprise +
-    chiffre_affaires_prélèvement_libératoire_services_éxonéré_cotisations *
+    revenus.
+      chiffre_affaires_prélèvement_libératoire_services_éxonéré_cotisations *
       1,7%
 ```
 
diff --git a/sources/oracles.ml b/sources/oracles.ml
index 09a32451538b3c49fe77498232cdeabd617a77e0..a2059420fc216173c998fac1766afcf829dee8a7 100644
--- a/sources/oracles.ml
+++ b/sources/oracles.ml
@@ -153,6 +153,8 @@ let imputation_aux_deficits_les_plus_anciens
 
 type direction_arrondi = Haut | Bas | Nul
 
+let zero = decimal_of_float 0.0
+
 let pro_rata_arrondi_euro (pro_rata_arrondi_euro_in : ProRataArrondiEuro_in.t) :
     ProRataArrondiEuro.t =
   let montant_a_distribuer_ : money =
@@ -164,15 +166,18 @@ let pro_rata_arrondi_euro (pro_rata_arrondi_euro_in : ProRataArrondiEuro_in.t) :
       pro_rata_arrondi_euro_in.ProRataArrondiEuro_in.bases_prorata_in
   then
     raise
-      (AssertionFailed
-         {
-           filename = "oracles.catala_fr";
-           start_line = 39;
-           start_column = 5;
-           end_line = 40;
-           end_column = 27;
-           law_headings = ["Calcul de pro-rata"];
-         });
+      (Error
+         ( AssertionFailed,
+           [
+             {
+               filename = "oracles.catala_fr";
+               start_line = 39;
+               start_column = 5;
+               end_line = 40;
+               end_column = 27;
+               law_headings = ["Calcul de pro-rata"];
+             };
+           ] ));
   if
     (not (o_eq_mon_mon montant_a_distribuer_ (money_of_units_int 0)))
     && Array.for_all
@@ -180,26 +185,32 @@ let pro_rata_arrondi_euro (pro_rata_arrondi_euro_in : ProRataArrondiEuro_in.t) :
          pro_rata_arrondi_euro_in.ProRataArrondiEuro_in.bases_prorata_in
   then
     raise
-      (AssertionFailed
-         {
-           filename = "oracles.catala_fr";
-           start_line = 41;
-           start_column = 5;
-           end_line = 41;
-           end_column = 55;
-           law_headings = ["Calcul de pro-rata"];
-         });
+      (Error
+         ( AssertionFailed,
+           [
+             {
+               filename = "oracles.catala_fr";
+               start_line = 41;
+               start_column = 5;
+               end_line = 41;
+               end_column = 55;
+               law_headings = ["Calcul de pro-rata"];
+             };
+           ] ));
   if money_round montant_a_distribuer_ <> montant_a_distribuer_ then
     raise
-      (AssertionFailed
-         {
-           filename = "oracles.catala_fr";
-           start_line = 42;
-           start_column = 5;
-           end_line = 42;
-           end_column = 61;
-           law_headings = ["Calcul de pro-rata"];
-         });
+      (Error
+         ( AssertionFailed,
+           [
+             {
+               filename = "oracles.catala_fr";
+               start_line = 42;
+               start_column = 5;
+               end_line = 42;
+               end_column = 61;
+               law_headings = ["Calcul de pro-rata"];
+             };
+           ] ));
   let bases_prorata_ : money array =
     pro_rata_arrondi_euro_in.ProRataArrondiEuro_in.bases_prorata_in
   in
@@ -212,14 +223,30 @@ let pro_rata_arrondi_euro (pro_rata_arrondi_euro_in : ProRataArrondiEuro_in.t) :
       Array.map
         (fun base_prorata ->
           let brut =
-            try
-              o_mult_rat_rat
-                (decimal_of_money montant_a_distribuer_)
-                (o_div_rat_rat
-                   (decimal_of_money base_prorata)
-                   (decimal_of_money assiette_totale_prorata))
-            with Runtime_ocaml.Runtime.Division_by_zero ->
-              Runtime_ocaml.Runtime.decimal_of_float 0.0
+            let assiette_totale_rat =
+              decimal_of_money assiette_totale_prorata
+            in
+            if o_eq_rat_rat assiette_totale_rat zero then zero
+            else
+              try
+                o_mult_rat_rat
+                  (decimal_of_money montant_a_distribuer_)
+                  (o_div_rat_rat
+                     {
+                       filename = "oracles.catala_fr";
+                       start_line = 0;
+                       start_column = 0;
+                       end_line = 0;
+                       end_column = 0;
+                       law_headings = [];
+                     }
+                     (decimal_of_money base_prorata)
+                     (decimal_of_money assiette_totale_prorata))
+              with
+              | Runtime_ocaml.Runtime.Error
+                  (Runtime_ocaml.Runtime.DivisionByZero, _)
+              ->
+                Runtime_ocaml.Runtime.decimal_of_float 0.0
           in
           let arrondi = decimal_round brut in
           ( money_of_decimal arrondi,
diff --git a/sources/prologue.catala_fr b/sources/prologue.catala_fr
index 2933984465faa186db075678b594cf6448338018..95464abf80c556edb7568592305d2a4fb4f7537d 100644
--- a/sources/prologue.catala_fr
+++ b/sources/prologue.catala_fr
@@ -435,7 +435,7 @@ déclaration champ d'application BénéficesNonCommerciauxFoyerFiscal:
   entrée déficits_réels_années_antérieures_non_professionnels contenu
     liste de Oracles.DéficitAntérieur
 
-  interne résultats_liquidation_bénéfices_non_commerciaux contenu
+  résultat résultats_liquidation_bénéfices_non_commerciaux contenu
     liste de BénéficesNonCommerciauxDéclarant
   interne solde_net_global_non_professionnel contenu argent
     état agrégation
@@ -445,7 +445,7 @@ déclaration champ d'application BénéficesNonCommerciauxFoyerFiscal:
   imputation_déficit_sur_revenu_quotientés_non_professionnels
     champ d'application ImputationDéficitSurRevenusQuotientés
 
-  imputation_aux_déficits_les_plus_anciens champ d'application 
+  imputation_aux_déficits_les_plus_anciens champ d'application
     Oracles.ImputationAuxDéficitsLesPlusAnciens
 
   résultat revenus_quotientés_imputés
@@ -462,7 +462,7 @@ déclaration champ d'application BénéficesNonCommerciauxFoyerFiscal:
 ### Bénéfices Industriels et Commerciaux
 
 ```catala-metadata
-déclaration structure DéclarationBénéficesIndustrielsCommerciaux:
+déclaration structure DéclarationBénéficesIndustrielsCommerciauxGénéraux:
   # Case 5KX/... et 5NX/...
   donnée plus_values_nettes_court_terme_micro contenu argent
   # Case 5KJ/... et 5IU/...
@@ -477,35 +477,40 @@ déclaration structure DéclarationBénéficesIndustrielsCommerciaux:
   donnée revenus_imposables_micro_marchandises contenu argent
   # Case 5KP/... et 5NP/...
   donnée revenus_imposables_micro_services contenu argent
+  # Case 5KC/... et 5NC/...
+  donnée revenus_imposables_réel contenu argent
+  # Case 5KF/... et 5NF/...
+  donnée déficit_réel contenu argent
   # Case 0XX
   donnée revenus_exceptionnels_ou_différés contenu
     liste de RevenuExceptionnelOuDifféré
 
 
-déclaration champ d'application BénéficesIndustrielsCommerciauxDéclarant:
-  entrée revenus_professionnels contenu
-    DéclarationBénéficesIndustrielsCommerciaux
-  entrée revenus_non_professionnels contenu
-    DéclarationBénéficesIndustrielsCommerciaux
-  # Les cases ci-dessous ne font pas la distinction entre revenus professionnels
-  # et non-professionnels, d'où le fait qu'on ne les ai pas mises avec
-  # "DéclarationBénéficesIndustrielsCommerciaux".
+déclaration structure DéclarationBénéficesIndustrielsCommerciaux:
+  donnée professionnels contenu
+    DéclarationBénéficesIndustrielsCommerciauxGénéraux
+  donnée non_professionnels contenu
+    DéclarationBénéficesIndustrielsCommerciauxGénéraux
   # Case 5TA/...
-  # entrée
+  # donnée
   #  total_chiffre_affaires_prélèvement_libératoire_marchandises
   # contenu argent
   # Case 5TJ/...
-  entrée
+  donnée
    chiffre_affaires_prélèvement_libératoire_marchandises_éxonéré_cotisations
   contenu argent
   # Case 5TB/...
-  # entrée
+  # donnée
   #  total_chiffre_affaires_prélèvement_libératoire_services
   # contenu argent
   # Case 5TK/...
-  entrée
+  donnée
    chiffre_affaires_prélèvement_libératoire_services_éxonéré_cotisations
   contenu argent
+
+
+déclaration champ d'application BénéficesIndustrielsCommerciauxDéclarant:
+  entrée revenus contenu DéclarationBénéficesIndustrielsCommerciaux
   entrée année_revenu contenu entier
 
   interne asiette_abattement_forfaitaire_micro_services contenu argent
@@ -526,6 +531,15 @@ déclaration champ d'application BénéficesIndustrielsCommerciauxDéclarant:
   résultat revenus_quotientés_non_professionnels contenu
     liste de RevenuQuotienté
 
+  résultat solde_net_professionnel contenu argent
+    état revenus_imposables_réel
+    état revenus_imposables_micro
+    état plus_moins_value_court_terme_micro
+  résultat solde_net_non_professionnel contenu argent
+    état revenus_imposables_réel
+    état revenus_imposables_micro
+    état plus_moins_value_court_terme_micro
+
   résultat prélèvement_libératoire_auto_entreprise contenu argent
     état marchandises
     état services
diff --git a/tests/benefices_non_commerciaux.catala_fr b/tests/benefices_non_commerciaux.catala_fr
index d83fc73361a62023fd9759e7bab80fa47392d60c..6968eddeae9f0387b801c3b27f281ac3b0d95a80 100644
--- a/tests/benefices_non_commerciaux.catala_fr
+++ b/tests/benefices_non_commerciaux.catala_fr
@@ -1,10 +1,10 @@
 > Usage de Interface
 > Usage de Impot_revenu en tant que IR
+> Usage de Oracles
 
 
 # Tests calcul revenu global sur bénéfices non commerciaux
 
-
 ## Cas test bénéfices non commerciaux n°1
 
 Composition du foyer fiscal : un couple pacsé et un enfant à charge.
@@ -13,17 +13,114 @@ Déclaration de revenus pour 2022 :
 
 Déclarant 1 :
 
-- 5QC : 12 700
-- 5QA :  8 000
-- 5QE : 50 000
+- 5JG :  1 000
+- 5JJ : 15 000
 
 Déclarant 2 :
 
-- 5LU :  2 000
-- 5LV :  5 000
-- 5LW :  1 000
+- 5LU :  3 000
+
+
+### Calcul du revenu net
+
+#### Déclarant 1
+
+Régis par [l'article 92 du
+CGI](https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000039382326/) et
+suivants, les revenus issus des bénéfices non commerciaux (BNC) nets, une fois
+déterminés, sont une composante du revenu brut global ([article 13
+CGI](https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000036428268/2018-01-01)).
+
+Dans le cas des BNC, deux régimes d'imposition existent :
+- Le régime déclaratif spécial ou "_micro-BNC_" : ce régime encadre les
+  revenus des contribuables dont les revenus de l'année civile précédente ou
+  de la pénultième année sont inférieurs ou égaux au montant de [l'article 102
+  ter du CGI](https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000042159018/).
+- Le régime de la déclaration contrôlée : qui encadre les revenus des
+  contribuables dont les revenus de l'année civile précédente ou de la
+  pénultième année sont supérieurs au montant fixé par le même texte.
+
+En l'espèce, le déclarant 1 relève du régime de la déclaration contrôlée.
+
+Il a déclaré avoir perçu en 2022 :
+
+##### Bénéfices et déficits du déclarant 1
+
+Le bénéfice imposable correspond au bénéfice net réalisé par le contribuable
+lors de l'année d'imposition. Ce bénéfice
+[net](https://bofip.impots.gouv.fr/bofip/2809-PGP.html/identifiant=BOI-BNC-BASE-10-10-20210512)
+est "_égal à l'excédent des recettes totales (produit brut) sur les dépenses
+nécessitées par l'exercice de la profession, prévu par le 1 de l'article
+93 du code général des impôts (CGI)_".
+
+Ces bénéfices peuvent être tirés d'activités :
+- Professionnelles;
+- Non professionnelles.
+
+La nature de l'activité a son importance si le contribuable déclare un déficit.
+En effet, l'imputation de ce dernier sur les revenus du foyer variera
+en fonction de la nature de l'activité exercée.
+
+En l'espèce, le déclarant 1 a perçu :
+
+- Un bénéfice non professionnel d'un montant de 1 000€;
+- Un déficit non professionnel d'un montant de 15 000€.
+
+Aux termes du [2 de l'article 156 du
+CGI](https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000022334816/2010-05-08),
+les déficits non commerciaux non professionnels ne peuvent s'imputer que sur
+des activités de même nature et ce jusqu'à la sixième année.
+
+Soit : 1 000 - 15 000 = - 14 000
 
-## Analyse
+**Le revenu net du déclarant 1 est de 0€ avec 14 000€ de déficit à reporter.**
+
+#### Déclarant 2
+
+En 2022, le déclarant 2 a également perçu des bénéfices non commerciaux
+non professionnels.
+
+Cependant, il relève du régime déclaratif spécial ("micro-BNC") prévu à
+[l'article 102 ter du CGI](https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000042159018/).
+
+Aux termes de cet article, le montant des bénéfices imposables
+se voit appliquer un abattement forfaitaire de 34%.
+
+Soit : 3 000*34% = 1 020, 3 000- 1020 = 1 980.
+
+**Le revenu net du déclarant 2 est de 1 980€**
+
+#### Calcul du revenu brut global
+
+[L'article 12 du CGI](https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000006302214/)
+dispose que "_L'impôt est dû chaque année à raison des bénéfices ou revenus que
+le contribuable réalise ou dont il dispose au cours de la même année_".
+Et le [1 de l'article 13](https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000044983201/2024-04-16)
+de préciser "_Le bénéfice ou revenu imposable est constitué par l'excédent du
+produit brut, y compris la valeur des profits et avantages en nature, sur les
+dépenses effectuées en vue de l'acquisition et de la conservation du revenu_".
+
+Le 2 de ce même article 13 fixe les modalités de détermination du revenu global
+net annuel. Ce revenu global net annuel sert de base à l'impôt sur le revenu.
+Afin de pouvoir le calculer, il faut commencer par calculer le revenu brut
+global.
+
+Celui-ci est déterminé par la somme des revenus nets catégoriels des différents
+membres du foyer fiscal, mais aussi par la soustraction des déficits.
+
+Ici, la question de l'imputation des déficits se pose. La question est réglée
+par le [2 de l'article 156 du
+CGI](https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000022334816/2010-05-08)
+qui dispose : "_Des déficits provenant d'activités non commerciales au sens
+de l'article 92, autres que ceux qui proviennent de l'exercice d'une profession
+libérale ou des charges et offices dont les titulaires n'ont pas la qualité de
+commerçants ; ces déficits peuvent cependant être imputés sur les bénéfices
+tirés d'activités semblables durant la même année ou les six années suivantes_".
+
+Soit : - 14 000 + 1 980 = - 12 020.
+
+**Le revenu brut global du foyer fiscal sera donc de 0€. Il faudra également
+reporter 12 020€ de déficit sur les six années suivantes.**
 
 
 ```catala
@@ -34,57 +131,153 @@ déclaration champ d'application BénéficesNonCommerciaux1:
   résultat sortie contenu IR.BénéficesNonCommerciauxFoyerFiscal
 
 champ d'application BénéficesNonCommerciaux1:
-  définition déclarant1.professionnels égal à
-    (résultat de Interface.BénéficesNonCommerciauxProfessionnelsDéclarant avec {
+  définition déclarant1.non_professionnels égal à
+    (résultat de Interface.BénéficesNonCommerciauxNonProfessionnelsDéclarant avec {
       -- généraux: (résultat de Interface.BénéficesNonCommerciauxGénérauxDéclarant avec {
-        -- revenus_imposables: 12700€
+        -- revenus_imposables: 1 000 €
+        -- déficit_réel : 15 000 €
       }).sortie
-      -- produits_inventeurs_logiciel_taxables: 8000 €
     }).sortie
 
   définition déclarant2.non_professionnels égal à
     (résultat de Interface.BénéficesNonCommerciauxNonProfessionnelsDéclarant avec {
       -- généraux: (résultat de Interface.BénéficesNonCommerciauxGénérauxDéclarant avec {
-        -- revenus_imposables_micro: 2000€
-        -- plus_values_nettes_long_terme_micro : 5000 €
-        -- moins_values_nettes_long_terme_micro: 1000 €
+        -- revenus_imposables_micro: 3000€
       }).sortie
     }).sortie
 
-  # cases des déficits non encore entrées, non codés: 5QE (déficit BNC pro régime réel) = 50 000 €
-
   définition sortie égal à résultat de IR.BénéficesNonCommerciauxFoyerFiscal avec {
     -- déficits_réels_années_antérieures_non_professionnels: []
     -- revenus: [déclarant1.sortie; déclarant2.sortie]
     -- année_revenu: 2022
   }
-
-  # TODO juridique et informatique : faire passer ce test
 ```
 
 
+```catala-test-inline
+$ catala test-scope BénéficesNonCommerciaux1
+┌─[RESULT]─
+│ sortie =
+│   Impot_revenu.BénéficesNonCommerciauxFoyerFiscal {
+│     -- résultats_liquidation_bénéfices_non_commerciaux:
+│       [
+│         Impot_revenu.BénéficesNonCommerciauxDéclarant {
+│           -- abattement_forfaitaire_micro_professionnel: 0,00 €
+│           -- abattement_forfaitaire_micro_non_professionnel: 0,00 €
+│           -- revenus_quotientés_professionnels: []
+│           -- revenus_quotientés_non_professionnels: []
+│           -- prélèvement_libératoire_auto_entreprise: 0,00 €
+│           -- prélèvement_libératoire_plus_values_long_terme: 0,00 €
+│           -- solde_net_professionnel: 0,00 €
+│           -- solde_net_non_professionnel: -14 000,00 €
+│           -- impôt_taux_forfaitaire: 0,00 €
+│         };
+│         Impot_revenu.BénéficesNonCommerciauxDéclarant {
+│           -- abattement_forfaitaire_micro_professionnel: 0,00 €
+│           -- abattement_forfaitaire_micro_non_professionnel: 1 020,00 €
+│           -- revenus_quotientés_professionnels: []
+│           -- revenus_quotientés_non_professionnels: []
+│           -- prélèvement_libératoire_auto_entreprise: 0,00 €
+│           -- prélèvement_libératoire_plus_values_long_terme: 0,00 €
+│           -- solde_net_professionnel: 0,00 €
+│           -- solde_net_non_professionnel: 1 980,00 €
+│           -- impôt_taux_forfaitaire: 0,00 €
+│         }
+│       ]
+│     -- revenus_quotientés_imputés: [[]; []]
+│     -- revenu_brut_global: 0,00 €
+│     -- déficit_brut_global: -12 020,00 €
+│     -- déficits_réels_années_antérieures_non_professionnels_mis_à_jour: []
+│   }
+└─
+```
+
 ## Cas test bénéfices non commerciaux n°2
 
-Composition du foyer fiscal : un couple pacsé et un enfant à charge.
+Déclarant 1 :
 
-Déclaration de revenus pour 2022 :
+- 5JG : 15 798
+- 5KT :  5 000
+- 5LT :  2 000
+- 5MT : 15 000
 
-Déclarant 1 :
+Calcul du revenu brut global et des déficits à imputer sur les années suivantes.
 
-- 5JG :  1 000
-- 5JJ : 15 000
+Régis par [l'article 92 et suivants du CGI](https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000044983291),
+les revenus issus des bénéfices non commerciaux net, une fois déterminés, sont
+une composante du revenu brut global ([article 13 du
+CGI](https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000044983201)).
 
-Déclarant 2 :
+Dans le cas des BNC, deux régimes d'imposition existent :
 
-- 5LU :  3 000
+- le régime déclaratif spécial ou "micro-BNC" : ce régime encadre les revenus
+  des contribuables dont les revenus de l'année civile précédente ou de la
+  pénultième année sont inférieurs ou égaux au montant de [l'article 102 ter
+  du
+  CGI](https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000047622381).
+- le régime de la déclaration contrôlée : qui encadre les revenus de l'année
+  civile précédente ou de la pénultième année sont supérieurs au montant prévu
+  par ce même texte.
+
+En l'espèce, le contribuable relève du régime de la déclaration contrôlée.
+
+En 2022, il déclare avoir perçu un bénéfice net de 15 798€.
+
+Le bénéfice imposable correspond au bénéfice net réalisé par le contribuable
+lors de l'année d'imposition. Ce bénéfice
+[net](https://bofip.impots.gouv.fr/bofip/2809-PGP.html/identifiant=BOI-BNC-BASE-10-10-20210512)
+est "_égal à l'excédent des recettes totales (produit brut) sur les dépenses
+nécessitées par l'exercice de la profession, prévu par le 1 de l'article 93 du
+code général des impôts (CGI)_".
+
+Ces bénéfices peuvent être de nature :
+
+- Professionnelle
+- Non professionnelle
+
+La nature de l'activité a son importance si le contribuable déclare un
+déficit. En effet, l'imputation de ce dernier sur les revenus du contribuables
+dépend de leurs natures respectives.
+
+Le contribuable a déclaré ici des déficits non commerciaux au titre des années
+:
 
-## Analyse
+- 2019 :  5 000€
+- 2020 :  2 000€
+- 2021 : 15 000€
 
+Aux termes du [2 de l'article 156 du
+CGI](https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000047622626),
+les déficits non commerciaux non professionnels ne peuvent être imputés que
+sur "_les bénéfices tirés d'activités semblables durant la même année ou les
+six années suivantes_".
+
+Et le I de ce même article de préciser concernant l'ordre d'imputation si le
+contribuable déclare plusieurs déficits antérieurs de même nature :
+"_l'excédent du déficit est reporté successivement sur le revenu global des
+années suivantes jusqu'à la sixième année inclusivement_".
+
+Autrement dit, il faut d'abord imputer sur les revenus de l'année d'imposition
+du contribuable le déficit le plus ancien et ce jusqu'au plus récent.
+
+Soit :
+
+15 798 (revenu année N)- 5 000 (déficit de l'année 2019) = 10 978
+
+Imputation du déficit de l'année 2020 :
+
+10 798 - 2 000 = 8 798
+
+Imputation du déficit de l'année 2021 :
+
+8 798 - 15 000 = - 6020.
+
+**En conséquence, le revenu brut global du contribuable sera de 0€. De plus il
+lui restera à imputer 6 020€ de déficit**
 
 ```catala
 déclaration champ d'application BénéficesNonCommerciaux2:
   déclarant1 champ d'application Interface.BénéficesNonCommerciauxDéclarant
-  déclarant2 champ d'application Interface.BénéficesNonCommerciauxDéclarant
 
   résultat sortie contenu IR.BénéficesNonCommerciauxFoyerFiscal
 
@@ -92,25 +285,324 @@ champ d'application BénéficesNonCommerciaux2:
   définition déclarant1.non_professionnels égal à
     (résultat de Interface.BénéficesNonCommerciauxNonProfessionnelsDéclarant avec {
       -- généraux: (résultat de Interface.BénéficesNonCommerciauxGénérauxDéclarant avec {
-        -- revenus_imposables: 1 000 €
-        -- déficit_réel : 15 000 €
+        -- revenus_imposables: 15 798 €
+      }).sortie
+    }).sortie
+
+  définition sortie égal à résultat de IR.BénéficesNonCommerciauxFoyerFiscal avec {
+    -- déficits_réels_années_antérieures_non_professionnels: [
+      Oracles.DéficitAntérieur {
+        -- année: 2019
+        -- valeur: 5000 €
+      };
+      Oracles.DéficitAntérieur {
+        -- année: 2020
+        -- valeur: 2000 €
+      };
+      Oracles.DéficitAntérieur {
+        -- année: 2021
+        -- valeur: 15 000 €
+      }
+    ]
+    -- revenus: [déclarant1.sortie]
+    -- année_revenu: 2022
+  }
+```
+
+```catala-test-inline
+$ catala test-scope BénéficesNonCommerciaux2
+┌─[RESULT]─
+│ sortie =
+│   Impot_revenu.BénéficesNonCommerciauxFoyerFiscal {
+│     -- résultats_liquidation_bénéfices_non_commerciaux:
+│       [
+│         Impot_revenu.BénéficesNonCommerciauxDéclarant {
+│           -- abattement_forfaitaire_micro_professionnel: 0,00 €
+│           -- abattement_forfaitaire_micro_non_professionnel: 0,00 €
+│           -- revenus_quotientés_professionnels: []
+│           -- revenus_quotientés_non_professionnels: []
+│           -- prélèvement_libératoire_auto_entreprise: 0,00 €
+│           -- prélèvement_libératoire_plus_values_long_terme: 0,00 €
+│           -- solde_net_professionnel: 0,00 €
+│           -- solde_net_non_professionnel: 15 798,00 €
+│           -- impôt_taux_forfaitaire: 0,00 €
+│         }
+│       ]
+│     -- revenus_quotientés_imputés: [[]]
+│     -- revenu_brut_global: 0,00 €
+│     -- déficit_brut_global: 0,00 €
+│     -- déficits_réels_années_antérieures_non_professionnels_mis_à_jour:
+│       [
+│         Oracles.DéficitAntérieur { -- année: 2 021 -- valeur: 6 202,00 € }
+│       ]
+│   }
+└─
+```
+
+## Cas de test bénéfices non commerciaux n°3
+
+Déclarant 1 :
+- 5JG : 22 540
+- 5JJ :  4 000
+
+Déclarant 2 :
+- 5RF : 10 000
+
+Déclarant 3 :
+- 5MU :  1 000
+- 5MY :    200
+- 5MD :    500
+
+Déficits antérieurs :
+
+- 2020 (5LT) :  1 000
+- 2021 (5MT) : 25 000
+
+Calcul du revenu brut global et imputation des déficits.
+
+### Analyse
+
+#### Déclarant 1
+
+Régis par [l'article 92 du
+CGI](https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000039382326/) et
+suivants, les revenus issus des bénéfices non commerciaux (BNC) nets , une
+fois déterminés, sont une composante du revenu brut global ([article 13
+CGI](https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000036428268/2018-01-01)).
+
+Dans le cas des BNC, deux régimes d'imposition existent :
+- Le régime déclaratif spécial ou "_micro-BNC_" : ce régime encadre les
+  revenus des contribuables dont les revenus de l'année civile précédente ou
+  de la pénultième année sont inférieurs ou égaux au montant de [l'article 102
+  ter du
+  CGI](https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000042159018/).
+- Le régime de la déclaration contrôlée : qui encadre les revenus des
+  contribuables dont les revenus de l'année civile précédente ou de la
+  pénultième année sont supérieurs au montant fixé par le même texte.
+
+En l'espèce, le déclarant 1 relève du régime de la déclaration contrôlée.
+
+Il a déclaré avoir perçu en 2022 :
+
+##### Bénéfices et déficits du déclarant 1
+
+Le bénéfice imposable correspond au bénéfice net réalisé par le contribuable
+lors de l'année d'imposition. Ce bénéfice
+[net](https://bofip.impots.gouv.fr/bofip/2809-PGP.html/identifiant=BOI-BNC-BASE-10-10-20210512)
+est "_égal à l'excédent des recettes totales (produit brut) sur les dépenses
+nécessitées par l'exercice de la profession, prévu par le 1 de l'article 93 du
+code général des impôts (CGI)_".
+
+Ces bénéfices peuvent être tirés d'activités :
+- Professionnelles;
+- Non professionnelles.
+
+La nature de l'activité a son importance si le contribuable déclare un
+déficit. En effet, l'imputation de ce dernier sur les revenus du foyer variera
+en fonction de la nature de l'activité exercée.
+
+En l'espèce, le déclarant 1 a déclaré avoir perçu en 2022 :
+
+- Un bénéfice non commercial non professionnel de 22 540€
+- Un déficit non commercial non professionnel de 4 000€.
+
+Aux termes du [2 de l'article 156 du
+CGI](https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000022334816/2010-05-08),
+les déficits non commerciaux non professionnels ne peuvent s'imputer que sur
+des activités de même nature et ce  jusqu'à la sixième année.
+
+Soit pour le déclarant 1 :
+
+22 540 - 4 000 = 18 540
+
+**Le déclarant 1 a un revenu net de 18 540€**
+
+#### Déclarant 2
+
+Il s'agit des revenus de même nature et du même régime que ceux du déclarant
+1.
+
+**Le revenu net du déclarant 2 est de 10 000€**
+
+#### Déclarant 3
+
+En 2022, le déclarant 3 a également perçu des bénéfices non commerciaux non
+professionnels.
+
+Cependant, il relève du régime déclaratif spécial ("micro-BNC") prévu à
+[l'article 102 ter du
+CGI](https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000042159018/).
+
+Aux termes de cet article, le montant des bénéfices imposables se voit
+appliquer un abattement forfaitaire de 34%.
+
+soit 1 000 * 34% = 660
+
+En outre, le déclarant 3 a également déclaré une plus-value à court  terme
+d'un montant de 200€  et une moins value à court terme de 500€.
+
+La compensation de ces deux éléments fait apparaitre une moins-value nette à
+court terme de 300€.
+
+Aux termes du [3 de l'article 39 quaterdecies du
+CGI](https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000027654286/2014-06-28)
+: "_l'excédent des moins-values à court terme constaté au cours d'un exercice
+est déduit des bénéfices de cet exercice_".
+
+Soit 660 - 300 = 360.
+
+**Le revenu net du déclarant 3 est de 360€**
+
+### Calcul du revenu brut global
+
+[L'article 12 du
+CGI](https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000006302214/)
+dispose que : "_L'impôt est dû chaque année à raison des bénéfices ou revenus
+que le contribuable réalise ou dont il dispose au cours de la même année_".
+
+Et le [1 de l'article
+13](https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000044983201/2024-04-22)
+de préciser : "_Le bénéfice ou revenu imposable est constitué par l'excédent
+du produit brut, y compris la valeur des profits et avantages en nature, sur
+les dépenses effectuées en vue de l'acquisition et de la conservation du
+revenu_".
+
+Le 2 de ce même article 13 fixe les modalités de détermination du revenu net
+global annuel. Ce revenu global net annuel sert de base à l'impôt sur le
+revenu. Afin de pouvoir le calculer, il faut commencer par calculer le revenu
+brut global. Celui-ci est déterminé par la somme des revenus nets catégoriels
+des différents membres du foyer fiscal soit :
+
+18 540 + 10 000 + 360 = 28 900.
+
+Mais le revenu brut global est aussi déterminé après l'imputation des
+déficits.
+
+En l'espèce, le foyer fiscal a déclaré des déficits au titre des années :
+- 2020 :  1 000€
+- 2021 : 25 000€
+
+Aux termes du [2 de l'article 156 du
+CGI](https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000022334816/2010-05-08),
+les déficits non commerciaux non professionnels ne peuvent être imputés que
+sur "_les bénéfices tirés d'activités semblables durant la même année ou les
+six années suivantes_".
+
+En l'espèce, tous les déclarants du foyer fiscal ont perçu des bénéfices non
+commerciaux non professionnels, les déficits antérieurs étant de même nature,
+ils peuvent donc être déduits de ces revenus.
+
+Le [premier alinéa du I de l'article 156 du
+CGI](https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000022334816/2010-05-08)
+précise l'ordre d'imputation des déficits des années antérieures sur les
+revenus de l'année d'imposition : "_l'excédent du déficit est reporté
+successivement sur le revenu global des années suivantes jusqu'à la sixième
+année inclusivement_".
+
+Autrement dit, il faut d'abord imputer sur les revenus de l'année d'imposition
+le déficit le plus ancien et remonter jusqu'au plus récent.
+
+Soit :
+
+- Imputation du déficit de l'année 2020 : 28 900 - 1 000 = 27 900
+- Imputation du déficit de l'année 2021 : 27 900 - 25 000 = 2 900
+
+**Le revenu brut global du foyer fiscal sera de 2 900€**
+
+```catala
+déclaration champ d'application BénéficesNonCommerciaux3:
+  déclarant1 champ d'application Interface.BénéficesNonCommerciauxDéclarant
+  déclarant2 champ d'application Interface.BénéficesNonCommerciauxDéclarant
+  déclarant3 champ d'application Interface.BénéficesNonCommerciauxDéclarant
+
+  résultat sortie contenu IR.BénéficesNonCommerciauxFoyerFiscal
+
+champ d'application BénéficesNonCommerciaux3:
+  définition déclarant1.non_professionnels égal à
+    (résultat de Interface.BénéficesNonCommerciauxNonProfessionnelsDéclarant avec {
+      -- généraux: (résultat de Interface.BénéficesNonCommerciauxGénérauxDéclarant avec {
+        -- revenus_imposables: 22 540 €
+        -- déficit_réel : 4 000 €
       }).sortie
     }).sortie
 
   définition déclarant2.non_professionnels égal à
     (résultat de Interface.BénéficesNonCommerciauxNonProfessionnelsDéclarant avec {
       -- généraux: (résultat de Interface.BénéficesNonCommerciauxGénérauxDéclarant avec {
-        -- revenus_imposables_micro: 3000€
+        -- revenus_imposables: 10 000 €
       }).sortie
     }).sortie
 
-  # cases des déficits non encore entrées, non codés: 5QE (déficit BNC pro régime réel) = 50 000 €
+  définition déclarant3.non_professionnels égal à
+    (résultat de Interface.BénéficesNonCommerciauxNonProfessionnelsDéclarant avec {
+      -- généraux: (résultat de Interface.BénéficesNonCommerciauxGénérauxDéclarant avec {
+        -- revenus_imposables_micro: 1 000 €
+        -- plus_values_nettes_court_terme_micro: 200 €
+        -- moins_values_nettes_court_terme_micro: 500 €
+      }).sortie
+    }).sortie
 
   définition sortie égal à résultat de IR.BénéficesNonCommerciauxFoyerFiscal avec {
-    -- déficits_réels_années_antérieures_non_professionnels: []
-    -- revenus: [déclarant1.sortie; déclarant2.sortie]
+    -- déficits_réels_années_antérieures_non_professionnels: [
+      Oracles.DéficitAntérieur {
+        -- année: 2020
+        -- valeur: 1 000 €
+      };
+      Oracles.DéficitAntérieur {
+        -- année: 2021
+        -- valeur: 25 000 €
+      }
+    ]
+    -- revenus: [déclarant1.sortie; déclarant2.sortie; déclarant3.sortie]
     -- année_revenu: 2022
   }
+```
 
-  # TODO juridique et informatique : faire passer ce test
+```catala-test-inline
+$ catala test-scope BénéficesNonCommerciaux3
+┌─[RESULT]─
+│ sortie =
+│   Impot_revenu.BénéficesNonCommerciauxFoyerFiscal {
+│     -- résultats_liquidation_bénéfices_non_commerciaux:
+│       [
+│         Impot_revenu.BénéficesNonCommerciauxDéclarant {
+│           -- abattement_forfaitaire_micro_professionnel: 0,00 €
+│           -- abattement_forfaitaire_micro_non_professionnel: 0,00 €
+│           -- revenus_quotientés_professionnels: []
+│           -- revenus_quotientés_non_professionnels: []
+│           -- prélèvement_libératoire_auto_entreprise: 0,00 €
+│           -- prélèvement_libératoire_plus_values_long_terme: 0,00 €
+│           -- solde_net_professionnel: 0,00 €
+│           -- solde_net_non_professionnel: 18 540,00 €
+│           -- impôt_taux_forfaitaire: 0,00 €
+│         };
+│         Impot_revenu.BénéficesNonCommerciauxDéclarant {
+│           -- abattement_forfaitaire_micro_professionnel: 0,00 €
+│           -- abattement_forfaitaire_micro_non_professionnel: 0,00 €
+│           -- revenus_quotientés_professionnels: []
+│           -- revenus_quotientés_non_professionnels: []
+│           -- prélèvement_libératoire_auto_entreprise: 0,00 €
+│           -- prélèvement_libératoire_plus_values_long_terme: 0,00 €
+│           -- solde_net_professionnel: 0,00 €
+│           -- solde_net_non_professionnel: 10 000,00 €
+│           -- impôt_taux_forfaitaire: 0,00 €
+│         };
+│         Impot_revenu.BénéficesNonCommerciauxDéclarant {
+│           -- abattement_forfaitaire_micro_professionnel: 0,00 €
+│           -- abattement_forfaitaire_micro_non_professionnel: 340,00 €
+│           -- revenus_quotientés_professionnels: []
+│           -- revenus_quotientés_non_professionnels: []
+│           -- prélèvement_libératoire_auto_entreprise: 0,00 €
+│           -- prélèvement_libératoire_plus_values_long_terme: 0,00 €
+│           -- solde_net_professionnel: 0,00 €
+│           -- solde_net_non_professionnel: 360,00 €
+│           -- impôt_taux_forfaitaire: 0,00 €
+│         }
+│       ]
+│     -- revenus_quotientés_imputés: [[]; []; []]
+│     -- revenu_brut_global: 2 900,00 €
+│     -- déficit_brut_global: 0,00 €
+│     -- déficits_réels_années_antérieures_non_professionnels_mis_à_jour: []
+│   }
+└─
 ```
diff --git a/tests/deficits_anterieurs.catala_fr b/tests/deficits_anterieurs.catala_fr
index eb7c31035d35959aed82b2752392c40361e79ad0..02e341eeda0773b834830de01af2ca5ebe161316 100644
--- a/tests/deficits_anterieurs.catala_fr
+++ b/tests/deficits_anterieurs.catala_fr
@@ -21,13 +21,13 @@ champ d'application DéficitsAntérieurs1:
 ```
 
 ```catala-test-inline
-$ catala Interpret --disable-warnings -s DéficitsAntérieurs1
-[RESULT] Computation successful! Results:
-[RESULT]
-sortie =
-  Oracles.ImputationAuxDéficitsLesPlusAnciens {
-    -- revenu_imputé: 0,00 €
-    -- déficits_antérieurs_restants:
-      [Oracles.DéficitAntérieur { -- année: 2 020 -- valeur: 100,00 € }]
-  }
+$ catala test-scope DéficitsAntérieurs1 --disable-warnings
+┌─[RESULT]─
+│ sortie =
+│   Oracles.ImputationAuxDéficitsLesPlusAnciens {
+│     -- revenu_imputé: 0,00 €
+│     -- déficits_antérieurs_restants:
+│       [Oracles.DéficitAntérieur { -- année: 2 020 -- valeur: 100,00 € }]
+│   }
+└─
 ```
diff --git a/tests/interface.catala_fr b/tests/interface.catala_fr
index f77ca4a26c60f148721a1bb2eb3960cf1cb0a224..b21e37dad9e302323a1703812c01dfd720d9c03c 100644
--- a/tests/interface.catala_fr
+++ b/tests/interface.catala_fr
@@ -283,7 +283,7 @@ champ d'application BénéficesNonCommerciauxDéclarant:
 ### Bénéfices industriels et commerciaux
 
 ```catala-metadata
-déclaration champ d'application BénéficesIndustrielsCommerciaux:
+déclaration champ d'application BénéficesIndustrielsCommerciauxGénérauxDéclarant:
   contexte plus_values_nettes_court_terme_micro contenu argent
   contexte moins_values_nettes_court_terme_micro contenu argent
   contexte plus_values_nettes_long_terme_micro contenu argent
@@ -291,15 +291,17 @@ déclaration champ d'application BénéficesIndustrielsCommerciaux:
   contexte plus_values_nettes_long_terme_réel contenu argent
   contexte revenus_imposables_micro_marchandises contenu argent
   contexte revenus_imposables_micro_services contenu argent
+  contexte revenus_imposables_réel contenu argent
+  contexte déficit_réel contenu argent
   contexte revenus_exceptionnels_ou_différés contenu
     liste de IR.RevenuExceptionnelOuDifféré
 
   résultat sortie contenu
-      IR.DéclarationBénéficesIndustrielsCommerciaux
+      IR.DéclarationBénéficesIndustrielsCommerciauxGénéraux
 ```
 
 ```catala
-champ d'application BénéficesIndustrielsCommerciaux:
+champ d'application BénéficesIndustrielsCommerciauxGénérauxDéclarant:
   définition plus_values_nettes_court_terme_micro égal à 0€
   définition moins_values_nettes_court_terme_micro égal à 0€
   définition plus_values_nettes_long_terme_micro égal à 0€
@@ -308,9 +310,11 @@ champ d'application BénéficesIndustrielsCommerciaux:
   définition revenus_imposables_micro_marchandises égal à 0 €
   définition revenus_imposables_micro_services égal à 0 €
   définition revenus_exceptionnels_ou_différés égal à []
+  définition revenus_imposables_réel égal à 0 €
+  définition déficit_réel égal à 0 €
 
   définition sortie égal à
-      IR.DéclarationBénéficesIndustrielsCommerciaux {
+      IR.DéclarationBénéficesIndustrielsCommerciauxGénéraux {
         -- plus_values_nettes_court_terme_micro:
           plus_values_nettes_court_terme_micro
         -- moins_values_nettes_court_terme_micro:
@@ -327,6 +331,49 @@ champ d'application BénéficesIndustrielsCommerciaux:
           revenus_imposables_micro_services
         -- revenus_exceptionnels_ou_différés:
           revenus_exceptionnels_ou_différés
+        -- revenus_imposables_réel: revenus_imposables_réel
+        -- déficit_réel: déficit_réel
+      }
+```
+
+```catala-metadata
+déclaration champ d'application BénéficesIndustrielsCommerciauxDéclarant:
+  contexte professionnels contenu
+    IR.DéclarationBénéficesIndustrielsCommerciauxGénéraux
+  contexte non_professionnels contenu
+    IR.DéclarationBénéficesIndustrielsCommerciauxGénéraux
+  contexte
+    chiffre_affaires_prélèvement_libératoire_marchandises_éxonéré_cotisations
+  contenu argent
+  contexte
+    chiffre_affaires_prélèvement_libératoire_services_éxonéré_cotisations
+  contenu argent
+
+  résultat sortie contenu
+      IR.DéclarationBénéficesIndustrielsCommerciaux
+```
+
+```catala
+champ d'application BénéficesIndustrielsCommerciauxDéclarant:
+  définition professionnels égal à
+    (résultat de BénéficesIndustrielsCommerciauxGénérauxDéclarant).sortie
+  définition non_professionnels égal à
+    (résultat de BénéficesIndustrielsCommerciauxGénérauxDéclarant).sortie
+  définition
+    chiffre_affaires_prélèvement_libératoire_marchandises_éxonéré_cotisations
+  égal à 0 €
+  définition
+    chiffre_affaires_prélèvement_libératoire_services_éxonéré_cotisations
+  égal à 0 €
+
+  définition sortie égal à
+      IR.DéclarationBénéficesIndustrielsCommerciaux {
+        -- professionnels: professionnels
+        -- non_professionnels: non_professionnels
+        -- chiffre_affaires_prélèvement_libératoire_marchandises_éxonéré_cotisations:
+          chiffre_affaires_prélèvement_libératoire_marchandises_éxonéré_cotisations
+        -- chiffre_affaires_prélèvement_libératoire_services_éxonéré_cotisations:
+          chiffre_affaires_prélèvement_libératoire_services_éxonéré_cotisations
       }
 ```
 
diff --git a/tests/nombre_de_parts.catala_fr b/tests/nombre_de_parts.catala_fr
index b3cdaffaf50caa4bce7705305a76e1466e620a8b..d8b7ce2ac4cd1fcbbaef9a1b01629b02794b2f0a 100644
--- a/tests/nombre_de_parts.catala_fr
+++ b/tests/nombre_de_parts.catala_fr
@@ -124,14 +124,14 @@ champ d'application NombreDeParts1:
 Le test ci-dessus doit donner le résultat suivant à l'exécution.
 
 ```catala-test-inline
-$ catala Interpret --disable-warnings -s NombreDeParts1
-[RESULT] Computation successful! Results:
-[RESULT]
-sortie =
-  Impot_revenu.NombreDeParts {
-    -- nombre_de_parts: 3,0
-    -- abattement: 0,00 €
-  }
+$ catala test-scope NombreDeParts1 --disable-warnings
+┌─[RESULT]─
+│ sortie =
+│   Impot_revenu.NombreDeParts {
+│     -- nombre_de_parts: 3,0
+│     -- abattement: 0,00 €
+│   }
+└─
 ```
 
 ## Cas de test 2
@@ -278,14 +278,14 @@ Le nombre de parts du foyer est donc de 4,5 parts.
 Le test ci-dessus doit donner le résultat suivant à l'exécution.
 
 ```catala-test-inline
-$ catala Interpret --disable-warnings -s NombreDeParts2
-[RESULT] Computation successful! Results:
-[RESULT]
-sortie =
-  Impot_revenu.NombreDeParts {
-    -- nombre_de_parts: 4,5
-    -- abattement: 0,00 €
-  }
+$ catala test-scope NombreDeParts2 --disable-warnings
+┌─[RESULT]─
+│ sortie =
+│   Impot_revenu.NombreDeParts {
+│     -- nombre_de_parts: 4,5
+│     -- abattement: 0,00 €
+│   }
+└─
 ```
 
 ## Cas de test 3
@@ -518,14 +518,14 @@ auquel il a droit doit être divisé de moitié.
 Le nombre de parts du foyer est donc de 4,5 parts.
 
 ```catala-test-inline
-$ catala Interpret --disable-warnings -s NombreDeParts3
-[RESULT] Computation successful! Results:
-[RESULT]
-sortie =
-  Impot_revenu.NombreDeParts {
-    -- nombre_de_parts: 4,0
-    -- abattement: 9 552,00 €
-  }
+$ catala test-scope NombreDeParts3 --disable-warnings
+┌─[RESULT]─
+│ sortie =
+│   Impot_revenu.NombreDeParts {
+│     -- nombre_de_parts: 4,0
+│     -- abattement: 9 552,00 €
+│   }
+└─
 ```
 
 ## Cas de test 4 (n°1 du POC 2023)
@@ -664,14 +664,14 @@ Soit une majoration de 0.25 par pour l'enfant à charge.
 **Aussi, le quotient familial du foyer fiscal P sera de 2.25 parts.**
 
 ```catala-test-inline
-$ catala Interpret --disable-warnings -s NombreDeParts4
-[RESULT] Computation successful! Results:
-[RESULT]
-sortie =
-  Impot_revenu.NombreDeParts {
-    -- nombre_de_parts: 2,25
-    -- abattement: 0,00 €
-  }
+$ catala test-scope NombreDeParts4 --disable-warnings
+┌─[RESULT]─
+│ sortie =
+│   Impot_revenu.NombreDeParts {
+│     -- nombre_de_parts: 2,25
+│     -- abattement: 0,00 €
+│   }
+└─
 ```
 
 ## Cas de test 5 (n°2 du POC)
@@ -834,12 +834,12 @@ prévoit une majoration supplémentaire d'un quart de part.
 3.75 parts**
 
 ```catala-test-inline
-$ catala Interpret --disable-warnings -s NombreDeParts5
-[RESULT] Computation successful! Results:
-[RESULT]
-sortie =
-  Impot_revenu.NombreDeParts {
-    -- nombre_de_parts: 3,75
-    -- abattement: 0,00 €
-  }
+$ catala test-scope NombreDeParts5 --disable-warnings
+┌─[RESULT]─
+│ sortie =
+│   Impot_revenu.NombreDeParts {
+│     -- nombre_de_parts: 3,75
+│     -- abattement: 0,00 €
+│   }
+└─
 ```
diff --git a/tests/prorata.catala_fr b/tests/prorata.catala_fr
index 6337eb29c1ba41cedd16c71e4874ef87fb9f9fd9..76f30d2271272a25f3e964bec83185fdc9a4a3dc 100644
--- a/tests/prorata.catala_fr
+++ b/tests/prorata.catala_fr
@@ -16,13 +16,13 @@ champ d'application ProRata1:
 
 
 ```catala-test-inline
-$ catala Interpret --disable-warnings -s ProRata1
-[RESULT] Computation successful! Results:
-[RESULT]
-sortie =
-  Oracles.ProRataArrondiEuro {
-    -- valeurs_proratisées: [10,00 €; 20,00 €; 30,00 €; 40,00 €]
-  }
+$ catala test-scope ProRata1 --disable-warnings
+┌─[RESULT]─
+│ sortie =
+│   Oracles.ProRataArrondiEuro {
+│     -- valeurs_proratisées: [10,00 €; 20,00 €; 30,00 €; 40,00 €]
+│   }
+└─
 ```
 
 ```catala
@@ -38,13 +38,13 @@ champ d'application ProRata2:
 ```
 
 ```catala-test-inline
-$ catala Interpret --disable-warnings -s ProRata2
-[RESULT] Computation successful! Results:
-[RESULT]
-sortie =
-  Oracles.ProRataArrondiEuro {
-    -- valeurs_proratisées: [2,00 €; 3,00 €; 4,00 €; 6,00 €]
-  }
+$ catala test-scope ProRata2 --disable-warnings
+┌─[RESULT]─
+│ sortie =
+│   Oracles.ProRataArrondiEuro {
+│     -- valeurs_proratisées: [2,00 €; 3,00 €; 4,00 €; 6,00 €]
+│   }
+└─
 ```
 
 ```catala
@@ -60,16 +60,16 @@ champ d'application ProRata3:
 ```
 
 ```catala-test-inline
-$ catala Interpret --disable-warnings -s ProRata3
-[RESULT] Computation successful! Results:
-[RESULT]
-sortie =
-  Oracles.ProRataArrondiEuro {
-    -- valeurs_proratisées:
-      [
-        11,00 €; 65,00 €; 10,00 €; 219,00 €; 20,00 €; 106,00 €;
-        30,00 €; 106,00 €
-      ]
-  }
+$ catala test-scope ProRata3 --disable-warnings
+┌─[RESULT]─
+│ sortie =
+│   Oracles.ProRataArrondiEuro {
+│     -- valeurs_proratisées:
+│       [
+│         11,00 €; 65,00 €; 10,00 €; 219,00 €; 20,00 €; 106,00 €;
+│         30,00 €; 106,00 €
+│       ]
+│   }
+└─
 ```
 
diff --git a/tests/traitements_salaires.catala_fr b/tests/traitements_salaires.catala_fr
index 3a59c3c03400a6ed69142a77c1f7995c392ffcdf..c60ce548a61837faa465bfae51ae2aff01f03d99 100644
--- a/tests/traitements_salaires.catala_fr
+++ b/tests/traitements_salaires.catala_fr
@@ -27,20 +27,20 @@ champ d'application TraitementsSalaires1:
 Le test ci-dessus doit donner le résultat suivant à l'exécution.
 
 ```catala-test-inline
-$ catala Interpret --disable-warnings -s TraitementsSalaires1
-[RESULT] Computation successful! Results:
-[RESULT]
-sortie =
-  Impot_revenu.TraitementsSalairesDéclarant {
-    -- abattement_pensions_retraites_rentes: 0,00 €
-    -- déduction_frais_professionnels_traitements_salaires: 1 000,00 €
-    -- exonérations_81_quater: 0,00 €
-    -- prélèvement_libératoire: 0,00 €
-    -- traitements_salaires_avec_déduction_frais_professionnels:
-      10 000,00 €
-    -- revenu_brut_déclarant_hors_quotient: 9 000,00 €
-    -- revenus_quotientés: []
-  }
+$ catala test-scope TraitementsSalaires1 --disable-warnings
+┌─[RESULT]─
+│ sortie =
+│   Impot_revenu.TraitementsSalairesDéclarant {
+│     -- abattement_pensions_retraites_rentes: 0,00 €
+│     -- déduction_frais_professionnels_traitements_salaires: 1 000,00 €
+│     -- exonérations_81_quater: 0,00 €
+│     -- prélèvement_libératoire: 0,00 €
+│     -- traitements_salaires_avec_déduction_frais_professionnels:
+│       10 000,00 €
+│     -- revenu_brut_déclarant_hors_quotient: 9 000,00 €
+│     -- revenus_quotientés: []
+│   }
+└─
 ```
 
 ## Cas de test 2
@@ -66,20 +66,20 @@ champ d'application TraitementsSalaires2:
 Le test ci-dessus doit donner le résultat suivant à l'exécution.
 
 ```catala-test-inline
-$ catala Interpret --disable-warnings -s TraitementsSalaires2
-[RESULT] Computation successful! Results:
-[RESULT]
-sortie =
-  Impot_revenu.TraitementsSalairesDéclarant {
-    -- abattement_pensions_retraites_rentes: 0,00 €
-    -- déduction_frais_professionnels_traitements_salaires: 2 000,00 €
-    -- exonérations_81_quater: 0,00 €
-    -- prélèvement_libératoire: 0,00 €
-    -- traitements_salaires_avec_déduction_frais_professionnels:
-      10 000,00 €
-    -- revenu_brut_déclarant_hors_quotient: 8 000,00 €
-    -- revenus_quotientés: []
-  }
+$ catala test-scope TraitementsSalaires2 --disable-warnings
+┌─[RESULT]─
+│ sortie =
+│   Impot_revenu.TraitementsSalairesDéclarant {
+│     -- abattement_pensions_retraites_rentes: 0,00 €
+│     -- déduction_frais_professionnels_traitements_salaires: 2 000,00 €
+│     -- exonérations_81_quater: 0,00 €
+│     -- prélèvement_libératoire: 0,00 €
+│     -- traitements_salaires_avec_déduction_frais_professionnels:
+│       10 000,00 €
+│     -- revenu_brut_déclarant_hors_quotient: 8 000,00 €
+│     -- revenus_quotientés: []
+│   }
+└─
 ```
 
 
@@ -263,25 +263,24 @@ champ d'application TraitementsSalaires3:
 ```
 
 ```catala-test-inline
-$ catala interpret --disable-warnings -s TraitementsSalaires3
-[RESULT] Computation successful! Results:
-[RESULT]
-parts =
-  Impot_revenu.NombreDeParts {
-    -- nombre_de_parts: 1,0
-    -- abattement: 0,00 €
-  }
-[RESULT]
-traitements_salaires =
-  Impot_revenu.TraitementsSalairesDéclarant {
-    -- abattement_pensions_retraites_rentes: 2 000,00 €
-    -- déduction_frais_professionnels_traitements_salaires: 0,00 €
-    -- exonérations_81_quater: 0,00 €
-    -- prélèvement_libératoire: 2 025,00 €
-    -- traitements_salaires_avec_déduction_frais_professionnels: 0,00 €
-    -- revenu_brut_déclarant_hors_quotient: 18 000,00 €
-    -- revenus_quotientés: []
-  }
+$ catala test-scope TraitementsSalaires3 --disable-warnings
+┌─[RESULT]─
+│ parts =
+│   Impot_revenu.NombreDeParts {
+│     -- nombre_de_parts: 1,0
+│     -- abattement: 0,00 €
+│   }
+│ traitements_salaires =
+│   Impot_revenu.TraitementsSalairesDéclarant {
+│     -- abattement_pensions_retraites_rentes: 2 000,00 €
+│     -- déduction_frais_professionnels_traitements_salaires: 0,00 €
+│     -- exonérations_81_quater: 0,00 €
+│     -- prélèvement_libératoire: 2 025,00 €
+│     -- traitements_salaires_avec_déduction_frais_professionnels: 0,00 €
+│     -- revenu_brut_déclarant_hors_quotient: 18 000,00 €
+│     -- revenus_quotientés: []
+│   }
+└─
 ```
 
 ## Cas de test 4
@@ -366,39 +365,39 @@ champ d'application TraitementsSalaires4:
 ```
 
 ```catala-test-inline
-$ catala interpret --disable-warnings -s TraitementsSalaires4
-[RESULT] Computation successful! Results:
-[RESULT]
-sortie =
-  Impot_revenu.TraitementsSalairesFoyerFiscal {
-    -- déclarations_avec_résultats_traitements_salaires:
-      [
-        Impot_revenu.TraitementsSalairesDéclarant {
-          -- abattement_pensions_retraites_rentes: 1 914,00 €
-          -- déduction_frais_professionnels_traitements_salaires: 0,00 €
-          -- exonérations_81_quater: 0,00 €
-          -- prélèvement_libératoire: 0,00 €
-          -- traitements_salaires_avec_déduction_frais_professionnels:
-            0,00 €
-          -- revenu_brut_déclarant_hors_quotient: 50 086,00 €
-          -- revenus_quotientés: []
-        };
-        Impot_revenu.TraitementsSalairesDéclarant {
-          -- abattement_pensions_retraites_rentes: 2 209,00 €
-          -- déduction_frais_professionnels_traitements_salaires: 0,00 €
-          -- exonérations_81_quater: 0,00 €
-          -- prélèvement_libératoire: 0,00 €
-          -- traitements_salaires_avec_déduction_frais_professionnels:
-            0,00 €
-          -- revenu_brut_déclarant_hors_quotient: 57 791,00 €
-          -- revenus_quotientés: []
-        }
-      ]
-    -- rentes_viagères_titre_onéreux: 0,00 €
-    -- revenu_brut_global: 107 877,00 €
-    -- déficit_brut_global: 0,00 €
-    -- revenus_quotientés: []
-  }
+$ catala test-scope TraitementsSalaires4 --disable-warnings
+┌─[RESULT]─
+│ sortie =
+│   Impot_revenu.TraitementsSalairesFoyerFiscal {
+│     -- déclarations_avec_résultats_traitements_salaires:
+│       [
+│         Impot_revenu.TraitementsSalairesDéclarant {
+│           -- abattement_pensions_retraites_rentes: 1 914,00 €
+│           -- déduction_frais_professionnels_traitements_salaires: 0,00 €
+│           -- exonérations_81_quater: 0,00 €
+│           -- prélèvement_libératoire: 0,00 €
+│           -- traitements_salaires_avec_déduction_frais_professionnels:
+│             0,00 €
+│           -- revenu_brut_déclarant_hors_quotient: 50 086,00 €
+│           -- revenus_quotientés: []
+│         };
+│         Impot_revenu.TraitementsSalairesDéclarant {
+│           -- abattement_pensions_retraites_rentes: 2 209,00 €
+│           -- déduction_frais_professionnels_traitements_salaires: 0,00 €
+│           -- exonérations_81_quater: 0,00 €
+│           -- prélèvement_libératoire: 0,00 €
+│           -- traitements_salaires_avec_déduction_frais_professionnels:
+│             0,00 €
+│           -- revenu_brut_déclarant_hors_quotient: 57 791,00 €
+│           -- revenus_quotientés: []
+│         }
+│       ]
+│     -- rentes_viagères_titre_onéreux: 0,00 €
+│     -- revenu_brut_global: 107 877,00 €
+│     -- déficit_brut_global: 0,00 €
+│     -- revenus_quotientés: []
+│   }
+└─
 ```
 
 ## Cas de test 5
@@ -535,49 +534,49 @@ champ d'application TraitementsSalaires5:
 ```
 
 ```catala-test-inline
-$ catala interpret --disable-warnings -s TraitementsSalaires5
-[RESULT] Computation successful! Results:
-[RESULT]
-sortie =
-  Impot_revenu.TraitementsSalairesFoyerFiscal {
-    -- déclarations_avec_résultats_traitements_salaires:
-      [
-        Impot_revenu.TraitementsSalairesDéclarant {
-          -- abattement_pensions_retraites_rentes: 3 958,00 €
-          -- déduction_frais_professionnels_traitements_salaires: 0,00 €
-          -- exonérations_81_quater: 0,00 €
-          -- prélèvement_libératoire: 0,00 €
-          -- traitements_salaires_avec_déduction_frais_professionnels:
-            0,00 €
-          -- revenu_brut_déclarant_hors_quotient: 68 042,00 €
-          -- revenus_quotientés: []
-        };
-        Impot_revenu.TraitementsSalairesDéclarant {
-          -- abattement_pensions_retraites_rentes: 165,00 €
-          -- déduction_frais_professionnels_traitements_salaires: 0,00 €
-          -- exonérations_81_quater: 0,00 €
-          -- prélèvement_libératoire: 0,00 €
-          -- traitements_salaires_avec_déduction_frais_professionnels:
-            0,00 €
-          -- revenu_brut_déclarant_hors_quotient: 135,00 €
-          -- revenus_quotientés: []
-        };
-        Impot_revenu.TraitementsSalairesDéclarant {
-          -- abattement_pensions_retraites_rentes: 0,00 €
-          -- déduction_frais_professionnels_traitements_salaires: 0,00 €
-          -- exonérations_81_quater: 0,00 €
-          -- prélèvement_libératoire: 6 750,00 €
-          -- traitements_salaires_avec_déduction_frais_professionnels:
-            0,00 €
-          -- revenu_brut_déclarant_hors_quotient: 0,00 €
-          -- revenus_quotientés: []
-        }
-      ]
-    -- rentes_viagères_titre_onéreux: 0,00 €
-    -- revenu_brut_global: 68 177,00 €
-    -- déficit_brut_global: 0,00 €
-    -- revenus_quotientés: []
-  }
+$ catala test-scope TraitementsSalaires5 --disable-warnings
+┌─[RESULT]─
+│ sortie =
+│   Impot_revenu.TraitementsSalairesFoyerFiscal {
+│     -- déclarations_avec_résultats_traitements_salaires:
+│       [
+│         Impot_revenu.TraitementsSalairesDéclarant {
+│           -- abattement_pensions_retraites_rentes: 3 958,00 €
+│           -- déduction_frais_professionnels_traitements_salaires: 0,00 €
+│           -- exonérations_81_quater: 0,00 €
+│           -- prélèvement_libératoire: 0,00 €
+│           -- traitements_salaires_avec_déduction_frais_professionnels:
+│             0,00 €
+│           -- revenu_brut_déclarant_hors_quotient: 68 042,00 €
+│           -- revenus_quotientés: []
+│         };
+│         Impot_revenu.TraitementsSalairesDéclarant {
+│           -- abattement_pensions_retraites_rentes: 165,00 €
+│           -- déduction_frais_professionnels_traitements_salaires: 0,00 €
+│           -- exonérations_81_quater: 0,00 €
+│           -- prélèvement_libératoire: 0,00 €
+│           -- traitements_salaires_avec_déduction_frais_professionnels:
+│             0,00 €
+│           -- revenu_brut_déclarant_hors_quotient: 135,00 €
+│           -- revenus_quotientés: []
+│         };
+│         Impot_revenu.TraitementsSalairesDéclarant {
+│           -- abattement_pensions_retraites_rentes: 0,00 €
+│           -- déduction_frais_professionnels_traitements_salaires: 0,00 €
+│           -- exonérations_81_quater: 0,00 €
+│           -- prélèvement_libératoire: 6 750,00 €
+│           -- traitements_salaires_avec_déduction_frais_professionnels:
+│             0,00 €
+│           -- revenu_brut_déclarant_hors_quotient: 0,00 €
+│           -- revenus_quotientés: []
+│         }
+│       ]
+│     -- rentes_viagères_titre_onéreux: 0,00 €
+│     -- revenu_brut_global: 68 177,00 €
+│     -- déficit_brut_global: 0,00 €
+│     -- revenus_quotientés: []
+│   }
+└─
 ```
 
 ## Cas de test 6 (n°1 du POC 2023)
@@ -746,50 +745,51 @@ champ d'application TraitementsSalaires6:
 ```
 
 ```catala-test-inline
-$ catala interpret --disable-warnings -s TraitementsSalaires6
-[RESULT] Computation successful! Results:
-[RESULT]
-sortie =
-  Impot_revenu.TraitementsSalairesFoyerFiscal {
-    -- déclarations_avec_résultats_traitements_salaires:
-      [
-        Impot_revenu.TraitementsSalairesDéclarant {
-          -- abattement_pensions_retraites_rentes: 0,00 €
-          -- déduction_frais_professionnels_traitements_salaires:
-            4 800,00 €
-          -- exonérations_81_quater: 0,00 €
-          -- prélèvement_libératoire: 0,00 €
-          -- traitements_salaires_avec_déduction_frais_professionnels:
-            48 000,00 €
-          -- revenu_brut_déclarant_hors_quotient: 43 200,00 €
-          -- revenus_quotientés: []
-        };
-        Impot_revenu.TraitementsSalairesDéclarant {
-          -- abattement_pensions_retraites_rentes: 4 123,00 €
-          -- déduction_frais_professionnels_traitements_salaires: 0,00 €
-          -- exonérations_81_quater: 0,00 €
-          -- prélèvement_libératoire: 0,00 €
-          -- traitements_salaires_avec_déduction_frais_professionnels:
-            0,00 €
-          -- revenu_brut_déclarant_hors_quotient: 41 377,00 €
-          -- revenus_quotientés: []
-        };
-        Impot_revenu.TraitementsSalairesDéclarant {
-          -- abattement_pensions_retraites_rentes: 0,00 €
-          -- déduction_frais_professionnels_traitements_salaires: 472,00 €
-          -- exonérations_81_quater: 0,00 €
-          -- prélèvement_libératoire: 0,00 €
-          -- traitements_salaires_avec_déduction_frais_professionnels:
-            3 000,00 €
-          -- revenu_brut_déclarant_hors_quotient: 2 528,00 €
-          -- revenus_quotientés: []
-        }
-      ]
-    -- rentes_viagères_titre_onéreux: 0,00 €
-    -- revenu_brut_global: 87 105,00 €
-    -- déficit_brut_global: 0,00 €
-    -- revenus_quotientés: []
-  }
+$ catala test-scope TraitementsSalaires6 --disable-warnings
+┌─[RESULT]─
+│ sortie =
+│   Impot_revenu.TraitementsSalairesFoyerFiscal {
+│     -- déclarations_avec_résultats_traitements_salaires:
+│       [
+│         Impot_revenu.TraitementsSalairesDéclarant {
+│           -- abattement_pensions_retraites_rentes: 0,00 €
+│           -- déduction_frais_professionnels_traitements_salaires:
+│             4 800,00 €
+│           -- exonérations_81_quater: 0,00 €
+│           -- prélèvement_libératoire: 0,00 €
+│           -- traitements_salaires_avec_déduction_frais_professionnels:
+│             48 000,00 €
+│           -- revenu_brut_déclarant_hors_quotient: 43 200,00 €
+│           -- revenus_quotientés: []
+│         };
+│         Impot_revenu.TraitementsSalairesDéclarant {
+│           -- abattement_pensions_retraites_rentes: 4 123,00 €
+│           -- déduction_frais_professionnels_traitements_salaires: 0,00 €
+│           -- exonérations_81_quater: 0,00 €
+│           -- prélèvement_libératoire: 0,00 €
+│           -- traitements_salaires_avec_déduction_frais_professionnels:
+│             0,00 €
+│           -- revenu_brut_déclarant_hors_quotient: 41 377,00 €
+│           -- revenus_quotientés: []
+│         };
+│         Impot_revenu.TraitementsSalairesDéclarant {
+│           -- abattement_pensions_retraites_rentes: 0,00 €
+│           -- déduction_frais_professionnels_traitements_salaires:
+│             472,00 €
+│           -- exonérations_81_quater: 0,00 €
+│           -- prélèvement_libératoire: 0,00 €
+│           -- traitements_salaires_avec_déduction_frais_professionnels:
+│             3 000,00 €
+│           -- revenu_brut_déclarant_hors_quotient: 2 528,00 €
+│           -- revenus_quotientés: []
+│         }
+│       ]
+│     -- rentes_viagères_titre_onéreux: 0,00 €
+│     -- revenu_brut_global: 87 105,00 €
+│     -- déficit_brut_global: 0,00 €
+│     -- revenus_quotientés: []
+│   }
+└─
 ```
 
 ## Cas de test revenus quotientés
@@ -1208,58 +1208,59 @@ champ d'application TraitementsSalaires7:
 ```
 
 ```catala-test-inline
-$ catala interpret --disable-warnings -s TraitementsSalaires7
-[RESULT] Computation successful! Results:
-[RESULT]
-sortie =
-  Impot_revenu.TraitementsSalairesFoyerFiscal {
-    -- déclarations_avec_résultats_traitements_salaires:
-      [
-        Impot_revenu.TraitementsSalairesDéclarant {
-          -- abattement_pensions_retraites_rentes: 0,00 €
-          -- déduction_frais_professionnels_traitements_salaires:
-            2 203,00 €
-          -- exonérations_81_quater: 0,00 €
-          -- prélèvement_libératoire: 0,00 €
-          -- traitements_salaires_avec_déduction_frais_professionnels:
-            48 650,00 €
-          -- revenu_brut_déclarant_hors_quotient: 46 447,00 €
-          -- revenus_quotientés:
-            [
-              Impot_revenu.RevenuQuotienté {
-                -- valeur_nette: 238 681,00 €
-                -- déduction: 11 319,00 €
-                -- coefficient: 5
-                -- catégorie: TraitementsSalaires ()
-              }
-            ]
-        };
-        Impot_revenu.TraitementsSalairesDéclarant {
-          -- abattement_pensions_retraites_rentes: 0,00 €
-          -- déduction_frais_professionnels_traitements_salaires: 895,00 €
-          -- exonérations_81_quater: 0,00 €
-          -- prélèvement_libératoire: 0,00 €
-          -- traitements_salaires_avec_déduction_frais_professionnels:
-            8 950,00 €
-          -- revenu_brut_déclarant_hors_quotient: 8 055,00 €
-          -- revenus_quotientés: []
-        };
-        Impot_revenu.TraitementsSalairesDéclarant {
-          -- abattement_pensions_retraites_rentes: 150,00 €
-          -- déduction_frais_professionnels_traitements_salaires: 0,00 €
-          -- exonérations_81_quater: 0,00 €
-          -- prélèvement_libératoire: 0,00 €
-          -- traitements_salaires_avec_déduction_frais_professionnels:
-            0,00 €
-          -- revenu_brut_déclarant_hors_quotient: 0,00 €
-          -- revenus_quotientés: []
-        }
-      ]
-    -- rentes_viagères_titre_onéreux: 30 000,00 €
-    -- revenu_brut_global: 84 502,00 €
-    -- déficit_brut_global: 0,00 €
-    -- revenus_quotientés: []
-  }
+$ catala test-scope TraitementsSalaires7 --disable-warnings
+┌─[RESULT]─
+│ sortie =
+│   Impot_revenu.TraitementsSalairesFoyerFiscal {
+│     -- déclarations_avec_résultats_traitements_salaires:
+│       [
+│         Impot_revenu.TraitementsSalairesDéclarant {
+│           -- abattement_pensions_retraites_rentes: 0,00 €
+│           -- déduction_frais_professionnels_traitements_salaires:
+│             2 203,00 €
+│           -- exonérations_81_quater: 0,00 €
+│           -- prélèvement_libératoire: 0,00 €
+│           -- traitements_salaires_avec_déduction_frais_professionnels:
+│             48 650,00 €
+│           -- revenu_brut_déclarant_hors_quotient: 46 447,00 €
+│           -- revenus_quotientés:
+│             [
+│               Impot_revenu.RevenuQuotienté {
+│                 -- valeur_nette: 238 681,00 €
+│                 -- déduction: 11 319,00 €
+│                 -- coefficient: 5
+│                 -- catégorie: TraitementsSalaires ()
+│               }
+│             ]
+│         };
+│         Impot_revenu.TraitementsSalairesDéclarant {
+│           -- abattement_pensions_retraites_rentes: 0,00 €
+│           -- déduction_frais_professionnels_traitements_salaires:
+│             895,00 €
+│           -- exonérations_81_quater: 0,00 €
+│           -- prélèvement_libératoire: 0,00 €
+│           -- traitements_salaires_avec_déduction_frais_professionnels:
+│             8 950,00 €
+│           -- revenu_brut_déclarant_hors_quotient: 8 055,00 €
+│           -- revenus_quotientés: []
+│         };
+│         Impot_revenu.TraitementsSalairesDéclarant {
+│           -- abattement_pensions_retraites_rentes: 150,00 €
+│           -- déduction_frais_professionnels_traitements_salaires: 0,00 €
+│           -- exonérations_81_quater: 0,00 €
+│           -- prélèvement_libératoire: 0,00 €
+│           -- traitements_salaires_avec_déduction_frais_professionnels:
+│             0,00 €
+│           -- revenu_brut_déclarant_hors_quotient: 0,00 €
+│           -- revenus_quotientés: []
+│         }
+│       ]
+│     -- rentes_viagères_titre_onéreux: 30 000,00 €
+│     -- revenu_brut_global: 84 502,00 €
+│     -- déficit_brut_global: 0,00 €
+│     -- revenus_quotientés: []
+│   }
+└─
 ```
 
 ## Cas de test revenus quotientés 2
@@ -1339,58 +1340,59 @@ champ d'application TraitementsSalaires8:
 ```
 
 ```catala-test-inline
-$ catala interpret --disable-warnings -s TraitementsSalaires8
-[RESULT] Computation successful! Results:
-[RESULT]
-sortie =
-  Impot_revenu.TraitementsSalairesFoyerFiscal {
-    -- déclarations_avec_résultats_traitements_salaires:
-      [
-        Impot_revenu.TraitementsSalairesDéclarant {
-          -- abattement_pensions_retraites_rentes: 0,00 €
-          -- déduction_frais_professionnels_traitements_salaires: 986,00 €
-          -- exonérations_81_quater: 0,00 €
-          -- prélèvement_libératoire: 0,00 €
-          -- traitements_salaires_avec_déduction_frais_professionnels:
-            72 360,00 €
-          -- revenu_brut_déclarant_hors_quotient: 71 374,00 €
-          -- revenus_quotientés:
-            [
-              Impot_revenu.RevenuQuotienté {
-                -- valeur_nette: 907 464,00 €
-                -- déduction: 12 536,00 €
-                -- coefficient: 6
-                -- catégorie: TraitementsSalaires ()
-              }
-            ]
-        };
-        Impot_revenu.TraitementsSalairesDéclarant {
-          -- abattement_pensions_retraites_rentes: 0,00 €
-          -- déduction_frais_professionnels_traitements_salaires:
-            5 000,00 €
-          -- exonérations_81_quater: 0,00 €
-          -- prélèvement_libératoire: 0,00 €
-          -- traitements_salaires_avec_déduction_frais_professionnels:
-            46 544,00 €
-          -- revenu_brut_déclarant_hors_quotient: 41 544,00 €
-          -- revenus_quotientés: []
-        };
-        Impot_revenu.TraitementsSalairesDéclarant {
-          -- abattement_pensions_retraites_rentes: 694,00 €
-          -- déduction_frais_professionnels_traitements_salaires: 0,00 €
-          -- exonérations_81_quater: 0,00 €
-          -- prélèvement_libératoire: 0,00 €
-          -- traitements_salaires_avec_déduction_frais_professionnels:
-            0,00 €
-          -- revenu_brut_déclarant_hors_quotient: 6 242,00 €
-          -- revenus_quotientés: []
-        }
-      ]
-    -- rentes_viagères_titre_onéreux: 0,00 €
-    -- revenu_brut_global: 119 160,00 €
-    -- déficit_brut_global: 0,00 €
-    -- revenus_quotientés: []
-  }
+$ catala test-scope TraitementsSalaires8 --disable-warnings
+┌─[RESULT]─
+│ sortie =
+│   Impot_revenu.TraitementsSalairesFoyerFiscal {
+│     -- déclarations_avec_résultats_traitements_salaires:
+│       [
+│         Impot_revenu.TraitementsSalairesDéclarant {
+│           -- abattement_pensions_retraites_rentes: 0,00 €
+│           -- déduction_frais_professionnels_traitements_salaires:
+│             986,00 €
+│           -- exonérations_81_quater: 0,00 €
+│           -- prélèvement_libératoire: 0,00 €
+│           -- traitements_salaires_avec_déduction_frais_professionnels:
+│             72 360,00 €
+│           -- revenu_brut_déclarant_hors_quotient: 71 374,00 €
+│           -- revenus_quotientés:
+│             [
+│               Impot_revenu.RevenuQuotienté {
+│                 -- valeur_nette: 907 464,00 €
+│                 -- déduction: 12 536,00 €
+│                 -- coefficient: 6
+│                 -- catégorie: TraitementsSalaires ()
+│               }
+│             ]
+│         };
+│         Impot_revenu.TraitementsSalairesDéclarant {
+│           -- abattement_pensions_retraites_rentes: 0,00 €
+│           -- déduction_frais_professionnels_traitements_salaires:
+│             5 000,00 €
+│           -- exonérations_81_quater: 0,00 €
+│           -- prélèvement_libératoire: 0,00 €
+│           -- traitements_salaires_avec_déduction_frais_professionnels:
+│             46 544,00 €
+│           -- revenu_brut_déclarant_hors_quotient: 41 544,00 €
+│           -- revenus_quotientés: []
+│         };
+│         Impot_revenu.TraitementsSalairesDéclarant {
+│           -- abattement_pensions_retraites_rentes: 694,00 €
+│           -- déduction_frais_professionnels_traitements_salaires: 0,00 €
+│           -- exonérations_81_quater: 0,00 €
+│           -- prélèvement_libératoire: 0,00 €
+│           -- traitements_salaires_avec_déduction_frais_professionnels:
+│             0,00 €
+│           -- revenu_brut_déclarant_hors_quotient: 6 242,00 €
+│           -- revenus_quotientés: []
+│         }
+│       ]
+│     -- rentes_viagères_titre_onéreux: 0,00 €
+│     -- revenu_brut_global: 119 160,00 €
+│     -- déficit_brut_global: 0,00 €
+│     -- revenus_quotientés: []
+│   }
+└─
 ```
 
 ## Cas test n°9 (revenus quotientés forts, traitements salaires faibles)
@@ -1451,37 +1453,37 @@ revenus quotientés ? L'exemple du BOFiP ne permet de le déterminer mais
 ce cas de test si (issue #56).
 
 ```catala-test-inline
-$ catala interpret --disable-warnings -s TraitementsSalaires9
-[RESULT] Computation successful! Results:
-[RESULT]
-sortie =
-  Impot_revenu.TraitementsSalairesFoyerFiscal {
-    -- déclarations_avec_résultats_traitements_salaires:
-      [
-        Impot_revenu.TraitementsSalairesDéclarant {
-          -- abattement_pensions_retraites_rentes: 0,00 €
-          -- déduction_frais_professionnels_traitements_salaires: 94,00 €
-          -- exonérations_81_quater: 0,00 €
-          -- prélèvement_libératoire: 0,00 €
-          -- traitements_salaires_avec_déduction_frais_professionnels:
-            350,00 €
-          -- revenu_brut_déclarant_hors_quotient: 256,00 €
-          -- revenus_quotientés:
-            [
-              Impot_revenu.RevenuQuotienté {
-                -- valeur_nette: 486 572,00 €
-                -- déduction: 13 428,00 €
-                -- coefficient: 6
-                -- catégorie: TraitementsSalaires ()
-              }
-            ]
-        }
-      ]
-    -- rentes_viagères_titre_onéreux: 0,00 €
-    -- revenu_brut_global: 256,00 €
-    -- déficit_brut_global: 0,00 €
-    -- revenus_quotientés: []
-  }
+$ catala test-scope TraitementsSalaires9 --disable-warnings
+┌─[RESULT]─
+│ sortie =
+│   Impot_revenu.TraitementsSalairesFoyerFiscal {
+│     -- déclarations_avec_résultats_traitements_salaires:
+│       [
+│         Impot_revenu.TraitementsSalairesDéclarant {
+│           -- abattement_pensions_retraites_rentes: 0,00 €
+│           -- déduction_frais_professionnels_traitements_salaires: 94,00 €
+│           -- exonérations_81_quater: 0,00 €
+│           -- prélèvement_libératoire: 0,00 €
+│           -- traitements_salaires_avec_déduction_frais_professionnels:
+│             350,00 €
+│           -- revenu_brut_déclarant_hors_quotient: 256,00 €
+│           -- revenus_quotientés:
+│             [
+│               Impot_revenu.RevenuQuotienté {
+│                 -- valeur_nette: 486 572,00 €
+│                 -- déduction: 13 428,00 €
+│                 -- coefficient: 6
+│                 -- catégorie: TraitementsSalaires ()
+│               }
+│             ]
+│         }
+│       ]
+│     -- rentes_viagères_titre_onéreux: 0,00 €
+│     -- revenu_brut_global: 256,00 €
+│     -- déficit_brut_global: 0,00 €
+│     -- revenus_quotientés: []
+│   }
+└─
 ```
 
 ## Cas de test nombre de parts + revenus 2
@@ -1791,41 +1793,41 @@ champ d'application TraitementsSalaires10:
 ```
 
 ```catala-test-inline
-$ catala interpret --disable-warnings -s TraitementsSalaires10
-[RESULT] Computation successful! Results:
-[RESULT]
-sortie =
-  Impot_revenu.TraitementsSalairesFoyerFiscal {
-    -- déclarations_avec_résultats_traitements_salaires:
-      [
-        Impot_revenu.TraitementsSalairesDéclarant {
-          -- abattement_pensions_retraites_rentes: 0,00 €
-          -- déduction_frais_professionnels_traitements_salaires:
-            4 000,00 €
-          -- exonérations_81_quater: 0,00 €
-          -- prélèvement_libératoire: 0,00 €
-          -- traitements_salaires_avec_déduction_frais_professionnels:
-            40 000,00 €
-          -- revenu_brut_déclarant_hors_quotient: 36 000,00 €
-          -- revenus_quotientés: []
-        };
-        Impot_revenu.TraitementsSalairesDéclarant {
-          -- abattement_pensions_retraites_rentes: 0,00 €
-          -- déduction_frais_professionnels_traitements_salaires:
-            2 000,00 €
-          -- exonérations_81_quater: 0,00 €
-          -- prélèvement_libératoire: 0,00 €
-          -- traitements_salaires_avec_déduction_frais_professionnels:
-            20 000,00 €
-          -- revenu_brut_déclarant_hors_quotient: 18 000,00 €
-          -- revenus_quotientés: []
-        }
-      ]
-    -- rentes_viagères_titre_onéreux: 10 500,00 €
-    -- revenu_brut_global: 64 500,00 €
-    -- déficit_brut_global: 0,00 €
-    -- revenus_quotientés: []
-  }
+$ catala test-scope TraitementsSalaires10 --disable-warnings
+┌─[RESULT]─
+│ sortie =
+│   Impot_revenu.TraitementsSalairesFoyerFiscal {
+│     -- déclarations_avec_résultats_traitements_salaires:
+│       [
+│         Impot_revenu.TraitementsSalairesDéclarant {
+│           -- abattement_pensions_retraites_rentes: 0,00 €
+│           -- déduction_frais_professionnels_traitements_salaires:
+│             4 000,00 €
+│           -- exonérations_81_quater: 0,00 €
+│           -- prélèvement_libératoire: 0,00 €
+│           -- traitements_salaires_avec_déduction_frais_professionnels:
+│             40 000,00 €
+│           -- revenu_brut_déclarant_hors_quotient: 36 000,00 €
+│           -- revenus_quotientés: []
+│         };
+│         Impot_revenu.TraitementsSalairesDéclarant {
+│           -- abattement_pensions_retraites_rentes: 0,00 €
+│           -- déduction_frais_professionnels_traitements_salaires:
+│             2 000,00 €
+│           -- exonérations_81_quater: 0,00 €
+│           -- prélèvement_libératoire: 0,00 €
+│           -- traitements_salaires_avec_déduction_frais_professionnels:
+│             20 000,00 €
+│           -- revenu_brut_déclarant_hors_quotient: 18 000,00 €
+│           -- revenus_quotientés: []
+│         }
+│       ]
+│     -- rentes_viagères_titre_onéreux: 10 500,00 €
+│     -- revenu_brut_global: 64 500,00 €
+│     -- déficit_brut_global: 0,00 €
+│     -- revenus_quotientés: []
+│   }
+└─
 ```
 
 ## Cas de test 11 (n°2 du POC 2023)
@@ -2454,79 +2456,80 @@ champ d'application TraitementsSalaires11:
 ```
 
 ```catala-test-inline
-$ catala interpret --disable-warnings -s TraitementsSalaires11
-[RESULT] Computation successful! Results:
-[RESULT]
-sortie =
-  Impot_revenu.TraitementsSalairesFoyerFiscal {
-    -- déclarations_avec_résultats_traitements_salaires:
-      [
-        Impot_revenu.TraitementsSalairesDéclarant {
-          -- abattement_pensions_retraites_rentes: 0,00 €
-          -- déduction_frais_professionnels_traitements_salaires:
-            13 133,00 €
-          -- exonérations_81_quater: 7 500,00 €
-          -- prélèvement_libératoire: 0,00 €
-          -- traitements_salaires_avec_déduction_frais_professionnels:
-            139 045,00 €
-          -- revenu_brut_déclarant_hors_quotient: 125 912,00 €
-          -- revenus_quotientés:
-            [
-              Impot_revenu.RevenuQuotienté {
-                -- valeur_nette: 3 734,00 €
-                -- déduction: 389,00 €
-                -- coefficient: 5
-                -- catégorie: TraitementsSalaires ()
-              }
-            ]
-        };
-        Impot_revenu.TraitementsSalairesDéclarant {
-          -- abattement_pensions_retraites_rentes: 0,00 €
-          -- déduction_frais_professionnels_traitements_salaires:
-            1 000,00 €
-          -- exonérations_81_quater: 0,00 €
-          -- prélèvement_libératoire: 0,00 €
-          -- traitements_salaires_avec_déduction_frais_professionnels:
-            10 000,00 €
-          -- revenu_brut_déclarant_hors_quotient: 9 000,00 €
-          -- revenus_quotientés: []
-        };
-        Impot_revenu.TraitementsSalairesDéclarant {
-          -- abattement_pensions_retraites_rentes: 350,00 €
-          -- déduction_frais_professionnels_traitements_salaires: 0,00 €
-          -- exonérations_81_quater: 0,00 €
-          -- prélèvement_libératoire: 0,00 €
-          -- traitements_salaires_avec_déduction_frais_professionnels:
-            0,00 €
-          -- revenu_brut_déclarant_hors_quotient: 0,00 €
-          -- revenus_quotientés: []
-        };
-        Impot_revenu.TraitementsSalairesDéclarant {
-          -- abattement_pensions_retraites_rentes: 0,00 €
-          -- déduction_frais_professionnels_traitements_salaires: 0,00 €
-          -- exonérations_81_quater: 0,00 €
-          -- prélèvement_libératoire: 0,00 €
-          -- traitements_salaires_avec_déduction_frais_professionnels:
-            0,00 €
-          -- revenu_brut_déclarant_hors_quotient: 0,00 €
-          -- revenus_quotientés: []
-        };
-        Impot_revenu.TraitementsSalairesDéclarant {
-          -- abattement_pensions_retraites_rentes: 0,00 €
-          -- déduction_frais_professionnels_traitements_salaires: 850,00 €
-          -- exonérations_81_quater: 0,00 €
-          -- prélèvement_libératoire: 0,00 €
-          -- traitements_salaires_avec_déduction_frais_professionnels:
-            500,00 €
-          -- revenu_brut_déclarant_hors_quotient: -350,00 €
-          -- revenus_quotientés: []
-        }
-      ]
-    -- rentes_viagères_titre_onéreux: 2 050,00 €
-    -- revenu_brut_global: 140 612,00 €
-    -- déficit_brut_global: 0,00 €
-    -- revenus_quotientés: []
-  }
+$ catala test-scope TraitementsSalaires11 --disable-warnings
+┌─[RESULT]─
+│ sortie =
+│   Impot_revenu.TraitementsSalairesFoyerFiscal {
+│     -- déclarations_avec_résultats_traitements_salaires:
+│       [
+│         Impot_revenu.TraitementsSalairesDéclarant {
+│           -- abattement_pensions_retraites_rentes: 0,00 €
+│           -- déduction_frais_professionnels_traitements_salaires:
+│             13 133,00 €
+│           -- exonérations_81_quater: 7 500,00 €
+│           -- prélèvement_libératoire: 0,00 €
+│           -- traitements_salaires_avec_déduction_frais_professionnels:
+│             139 045,00 €
+│           -- revenu_brut_déclarant_hors_quotient: 125 912,00 €
+│           -- revenus_quotientés:
+│             [
+│               Impot_revenu.RevenuQuotienté {
+│                 -- valeur_nette: 3 734,00 €
+│                 -- déduction: 389,00 €
+│                 -- coefficient: 5
+│                 -- catégorie: TraitementsSalaires ()
+│               }
+│             ]
+│         };
+│         Impot_revenu.TraitementsSalairesDéclarant {
+│           -- abattement_pensions_retraites_rentes: 0,00 €
+│           -- déduction_frais_professionnels_traitements_salaires:
+│             1 000,00 €
+│           -- exonérations_81_quater: 0,00 €
+│           -- prélèvement_libératoire: 0,00 €
+│           -- traitements_salaires_avec_déduction_frais_professionnels:
+│             10 000,00 €
+│           -- revenu_brut_déclarant_hors_quotient: 9 000,00 €
+│           -- revenus_quotientés: []
+│         };
+│         Impot_revenu.TraitementsSalairesDéclarant {
+│           -- abattement_pensions_retraites_rentes: 350,00 €
+│           -- déduction_frais_professionnels_traitements_salaires: 0,00 €
+│           -- exonérations_81_quater: 0,00 €
+│           -- prélèvement_libératoire: 0,00 €
+│           -- traitements_salaires_avec_déduction_frais_professionnels:
+│             0,00 €
+│           -- revenu_brut_déclarant_hors_quotient: 0,00 €
+│           -- revenus_quotientés: []
+│         };
+│         Impot_revenu.TraitementsSalairesDéclarant {
+│           -- abattement_pensions_retraites_rentes: 0,00 €
+│           -- déduction_frais_professionnels_traitements_salaires: 0,00 €
+│           -- exonérations_81_quater: 0,00 €
+│           -- prélèvement_libératoire: 0,00 €
+│           -- traitements_salaires_avec_déduction_frais_professionnels:
+│             0,00 €
+│           -- revenu_brut_déclarant_hors_quotient: 0,00 €
+│           -- revenus_quotientés: []
+│         };
+│         Impot_revenu.TraitementsSalairesDéclarant {
+│           -- abattement_pensions_retraites_rentes: 0,00 €
+│           -- déduction_frais_professionnels_traitements_salaires:
+│             850,00 €
+│           -- exonérations_81_quater: 0,00 €
+│           -- prélèvement_libératoire: 0,00 €
+│           -- traitements_salaires_avec_déduction_frais_professionnels:
+│             500,00 €
+│           -- revenu_brut_déclarant_hors_quotient: -350,00 €
+│           -- revenus_quotientés: []
+│         }
+│       ]
+│     -- rentes_viagères_titre_onéreux: 2 050,00 €
+│     -- revenu_brut_global: 140 612,00 €
+│     -- déficit_brut_global: 0,00 €
+│     -- revenus_quotientés: []
+│   }
+└─
 ```
 
 ## Cas de test 12
@@ -2574,55 +2577,55 @@ champ d'application TraitementsSalaires12:
 
 
 ```catala-test-inline
-$ catala interpret --disable-warnings -s TraitementsSalaires12
-[RESULT] Computation successful! Results:
-[RESULT]
-sortie =
-  Impot_revenu.TraitementsSalairesFoyerFiscal {
-    -- déclarations_avec_résultats_traitements_salaires:
-      [
-        Impot_revenu.TraitementsSalairesDéclarant {
-          -- abattement_pensions_retraites_rentes: 0,00 €
-          -- déduction_frais_professionnels_traitements_salaires:
-            15 000,00 €
-          -- exonérations_81_quater: 0,00 €
-          -- prélèvement_libératoire: 0,00 €
-          -- traitements_salaires_avec_déduction_frais_professionnels:
-            10 000,00 €
-          -- revenu_brut_déclarant_hors_quotient: -5 000,00 €
-          -- revenus_quotientés:
-            [
-              Impot_revenu.RevenuQuotienté {
-                -- valeur_nette: 0,00 €
-                -- déduction: 5 000,00 €
-                -- coefficient: 5
-                -- catégorie: TraitementsSalaires ()
-              }
-            ]
-        };
-        Impot_revenu.TraitementsSalairesDéclarant {
-          -- abattement_pensions_retraites_rentes: 0,00 €
-          -- déduction_frais_professionnels_traitements_salaires: 0,00 €
-          -- exonérations_81_quater: 0,00 €
-          -- prélèvement_libératoire: 0,00 €
-          -- traitements_salaires_avec_déduction_frais_professionnels:
-            0,00 €
-          -- revenu_brut_déclarant_hors_quotient: 0,00 €
-          -- revenus_quotientés:
-            [
-              Impot_revenu.RevenuQuotienté {
-                -- valeur_nette: 0,00 €
-                -- déduction: 500,00 €
-                -- coefficient: 4
-                -- catégorie: TraitementsSalaires ()
-              }
-            ]
-        }
-      ]
-    -- rentes_viagères_titre_onéreux: 0,00 €
-    -- revenu_brut_global: 0,00 €
-    -- déficit_brut_global: -500,00 €
-    -- revenus_quotientés: []
-  }
+$ catala test-scope TraitementsSalaires12 --disable-warnings
+┌─[RESULT]─
+│ sortie =
+│   Impot_revenu.TraitementsSalairesFoyerFiscal {
+│     -- déclarations_avec_résultats_traitements_salaires:
+│       [
+│         Impot_revenu.TraitementsSalairesDéclarant {
+│           -- abattement_pensions_retraites_rentes: 0,00 €
+│           -- déduction_frais_professionnels_traitements_salaires:
+│             15 000,00 €
+│           -- exonérations_81_quater: 0,00 €
+│           -- prélèvement_libératoire: 0,00 €
+│           -- traitements_salaires_avec_déduction_frais_professionnels:
+│             10 000,00 €
+│           -- revenu_brut_déclarant_hors_quotient: -5 000,00 €
+│           -- revenus_quotientés:
+│             [
+│               Impot_revenu.RevenuQuotienté {
+│                 -- valeur_nette: 0,00 €
+│                 -- déduction: 5 000,00 €
+│                 -- coefficient: 5
+│                 -- catégorie: TraitementsSalaires ()
+│               }
+│             ]
+│         };
+│         Impot_revenu.TraitementsSalairesDéclarant {
+│           -- abattement_pensions_retraites_rentes: 0,00 €
+│           -- déduction_frais_professionnels_traitements_salaires: 0,00 €
+│           -- exonérations_81_quater: 0,00 €
+│           -- prélèvement_libératoire: 0,00 €
+│           -- traitements_salaires_avec_déduction_frais_professionnels:
+│             0,00 €
+│           -- revenu_brut_déclarant_hors_quotient: 0,00 €
+│           -- revenus_quotientés:
+│             [
+│               Impot_revenu.RevenuQuotienté {
+│                 -- valeur_nette: 0,00 €
+│                 -- déduction: 500,00 €
+│                 -- coefficient: 4
+│                 -- catégorie: TraitementsSalaires ()
+│               }
+│             ]
+│         }
+│       ]
+│     -- rentes_viagères_titre_onéreux: 0,00 €
+│     -- revenu_brut_global: 0,00 €
+│     -- déficit_brut_global: -500,00 €
+│     -- revenus_quotientés: []
+│   }
+└─
 ```