diff --git a/sources/cgi_revenus.catala_fr b/sources/cgi_revenus.catala_fr
index 1a98ab303446dafa4205ea7ff895769b4b86857f..29158fce352f1040d10596d753e6dbaa152c4f54 100644
--- a/sources/cgi_revenus.catala_fr
+++ b/sources/cgi_revenus.catala_fr
@@ -862,7 +862,7 @@ champ d'application BénéficesIndustrielsCommerciauxDéclarant:
     revenus_exceptionnels_non_professionnels_abattement_micro_marchandises
   égal à
     liste de revenu_exceptionnel_ou_différé parmi
-      revenus.non_professionnels.revenus_exceptionnels_ou_différés
+      revenus.non_professionnels.généraux.revenus_exceptionnels_ou_différés
     tel que
       selon revenu_exceptionnel_ou_différé.catégorie sous forme
       -- MicroBénéficesIndustrielsCommerciauxMarchandises: vrai
@@ -878,7 +878,7 @@ champ d'application BénéficesIndustrielsCommerciauxDéclarant:
     revenus_exceptionnels_non_professionnels_locations_meublées_rurales_spéciales
   égal à
     liste de revenu_exceptionnel_ou_différé parmi
-      revenus.non_professionnels.revenus_exceptionnels_ou_différés
+      revenus.non_professionnels.généraux.revenus_exceptionnels_ou_différés
     tel que
       selon revenu_exceptionnel_ou_différé.catégorie sous forme
       -- MicroBénéficesIndustrielsCommerciauxLocationsMeubléesRuralesSpéciales:
diff --git a/sources/oracles.ml b/sources/oracles.ml
index 4dc285946de21c7331984301a581dd267fb502b2..675e3a4fb478a9da798362e8bdd38e62e3283656 100644
--- a/sources/oracles.ml
+++ b/sources/oracles.ml
@@ -193,24 +193,24 @@ let embed_pro_rata_arrondi_euro_branchement
 module ProRataArrondiEuroBranchement_in = struct
   type t = {
     montant_a_distribuer_in : money;
-    base_prorata_1_in : unit -> money;
-    base_prorata_2_in : unit -> money;
-    base_prorata_3_in : unit -> money;
-    base_prorata_4_in : unit -> money;
-    base_prorata_5_in : unit -> money;
-    base_prorata_6_in : unit -> money;
-    base_prorata_7_in : unit -> money;
-    base_prorata_8_in : unit -> money;
-    base_prorata_9_in : unit -> money;
-    bases_prorata_liste_1_in : unit -> money array;
-    bases_prorata_liste_2_in : unit -> money array;
-    bases_prorata_liste_3_in : unit -> money array;
-    bases_prorata_liste_4_in : unit -> money array;
-    bases_prorata_liste_5_in : unit -> money array;
-    bases_prorata_liste_6_in : unit -> money array;
-    bases_prorata_liste_7_in : unit -> money array;
-    bases_prorata_liste_8_in : unit -> money array;
-    bases_prorata_liste_9_in : unit -> money array;
+    base_prorata_1_in : unit -> money Eoption.t;
+    base_prorata_2_in : unit -> money Eoption.t;
+    base_prorata_3_in : unit -> money Eoption.t;
+    base_prorata_4_in : unit -> money Eoption.t;
+    base_prorata_5_in : unit -> money Eoption.t;
+    base_prorata_6_in : unit -> money Eoption.t;
+    base_prorata_7_in : unit -> money Eoption.t;
+    base_prorata_8_in : unit -> money Eoption.t;
+    base_prorata_9_in : unit -> money Eoption.t;
+    bases_prorata_liste_1_in : unit -> money array Eoption.t;
+    bases_prorata_liste_2_in : unit -> money array Eoption.t;
+    bases_prorata_liste_3_in : unit -> money array Eoption.t;
+    bases_prorata_liste_4_in : unit -> money array Eoption.t;
+    bases_prorata_liste_5_in : unit -> money array Eoption.t;
+    bases_prorata_liste_6_in : unit -> money array Eoption.t;
+    bases_prorata_liste_7_in : unit -> money array Eoption.t;
+    bases_prorata_liste_8_in : unit -> money array Eoption.t;
+    bases_prorata_liste_9_in : unit -> money array Eoption.t;
   }
 end
 
@@ -536,81 +536,81 @@ let pro_rata_arrondi_euro_branchement
     pro_rata_arrondi_euro_branchement_in
       .ProRataArrondiEuroBranchement_in.montant_a_distribuer_in
   in
-  let base_prorata_1_ : unit -> money =
+  let base_prorata_1_ =
     pro_rata_arrondi_euro_branchement_in
       .ProRataArrondiEuroBranchement_in.base_prorata_1_in
   in
-  let base_prorata_2_ : unit -> money =
+  let base_prorata_2_ =
     pro_rata_arrondi_euro_branchement_in
       .ProRataArrondiEuroBranchement_in.base_prorata_2_in
   in
-  let base_prorata_3_ : unit -> money =
+  let base_prorata_3_ =
     pro_rata_arrondi_euro_branchement_in
       .ProRataArrondiEuroBranchement_in.base_prorata_3_in
   in
-  let base_prorata_4_ : unit -> money =
+  let base_prorata_4_ =
     pro_rata_arrondi_euro_branchement_in
       .ProRataArrondiEuroBranchement_in.base_prorata_4_in
   in
-  let base_prorata_5_ : unit -> money =
+  let base_prorata_5_ =
     pro_rata_arrondi_euro_branchement_in
       .ProRataArrondiEuroBranchement_in.base_prorata_5_in
   in
-  let base_prorata_6_ : unit -> money =
+  let base_prorata_6_ =
     pro_rata_arrondi_euro_branchement_in
       .ProRataArrondiEuroBranchement_in.base_prorata_6_in
   in
-  let base_prorata_7_ : unit -> money =
+  let base_prorata_7_ =
     pro_rata_arrondi_euro_branchement_in
       .ProRataArrondiEuroBranchement_in.base_prorata_7_in
   in
-  let base_prorata_8_ : unit -> money =
+  let base_prorata_8_ =
     pro_rata_arrondi_euro_branchement_in
       .ProRataArrondiEuroBranchement_in.base_prorata_8_in
   in
-  let base_prorata_9_ : unit -> money =
+  let base_prorata_9_ =
     pro_rata_arrondi_euro_branchement_in
       .ProRataArrondiEuroBranchement_in.base_prorata_9_in
   in
-  let bases_prorata_liste_1_ : unit -> money array =
+  let bases_prorata_liste_1_ =
     pro_rata_arrondi_euro_branchement_in
       .ProRataArrondiEuroBranchement_in.bases_prorata_liste_1_in
   in
-  let bases_prorata_liste_2_ : unit -> money array =
+  let bases_prorata_liste_2_ =
     pro_rata_arrondi_euro_branchement_in
       .ProRataArrondiEuroBranchement_in.bases_prorata_liste_2_in
   in
-  let bases_prorata_liste_3_ : unit -> money array =
+  let bases_prorata_liste_3_ =
     pro_rata_arrondi_euro_branchement_in
       .ProRataArrondiEuroBranchement_in.bases_prorata_liste_3_in
   in
-  let bases_prorata_liste_4_ : unit -> money array =
+  let bases_prorata_liste_4_ =
     pro_rata_arrondi_euro_branchement_in
       .ProRataArrondiEuroBranchement_in.bases_prorata_liste_4_in
   in
-  let bases_prorata_liste_5_ : unit -> money array =
+  let bases_prorata_liste_5_ =
     pro_rata_arrondi_euro_branchement_in
       .ProRataArrondiEuroBranchement_in.bases_prorata_liste_5_in
   in
-  let bases_prorata_liste_6_ : unit -> money array =
+  let bases_prorata_liste_6_ =
     pro_rata_arrondi_euro_branchement_in
       .ProRataArrondiEuroBranchement_in.bases_prorata_liste_6_in
   in
-  let bases_prorata_liste_7_ : unit -> money array =
+  let bases_prorata_liste_7_ =
     pro_rata_arrondi_euro_branchement_in
       .ProRataArrondiEuroBranchement_in.bases_prorata_liste_7_in
   in
-  let bases_prorata_liste_8_ : unit -> money array =
+  let bases_prorata_liste_8_ =
     pro_rata_arrondi_euro_branchement_in
       .ProRataArrondiEuroBranchement_in.bases_prorata_liste_8_in
   in
-  let bases_prorata_liste_9_ : unit -> money array =
+  let bases_prorata_liste_9_ =
     pro_rata_arrondi_euro_branchement_in
       .ProRataArrondiEuroBranchement_in.bases_prorata_liste_9_in
   in
   let base_prorata_1_ : money =
-    try
-      handle_default
+    match
+      handle_exceptions
         [|
           {
             filename = "sources/oracles.catala_fr";
@@ -621,27 +621,14 @@ let pro_rata_arrondi_euro_branchement
             law_headings = ["Calcul de pro-rata"];
           };
         |]
-        [| (fun (_ : unit) -> base_prorata_1_ ()) |]
-        (fun (_ : unit) -> true)
-        (fun (_ : unit) -> money_of_units_int 0)
-    with Empty ->
-      raise
-        (Runtime_ocaml.Runtime.Error
-           ( NoValue,
-             [
-               {
-                 filename = "sources/oracles.catala_fr";
-                 start_line = 86;
-                 start_column = 12;
-                 end_line = 86;
-                 end_column = 26;
-                 law_headings = ["Calcul de pro-rata"];
-               };
-             ] ))
+        [| base_prorata_1_ () |]
+    with
+    | ENone _ -> money_of_units_int 0
+    | ESome x -> x
   in
   let base_prorata_2_ : money =
-    try
-      handle_default
+    match
+      handle_exceptions
         [|
           {
             filename = "sources/oracles.catala_fr";
@@ -652,27 +639,14 @@ let pro_rata_arrondi_euro_branchement
             law_headings = ["Calcul de pro-rata"];
           };
         |]
-        [| (fun (_ : unit) -> base_prorata_2_ ()) |]
-        (fun (_ : unit) -> true)
-        (fun (_ : unit) -> money_of_units_int 0)
-    with Empty ->
-      raise
-        (Runtime_ocaml.Runtime.Error
-           ( NoValue,
-             [
-               {
-                 filename = "sources/oracles.catala_fr";
-                 start_line = 87;
-                 start_column = 12;
-                 end_line = 87;
-                 end_column = 26;
-                 law_headings = ["Calcul de pro-rata"];
-               };
-             ] ))
+        [| base_prorata_2_ () |]
+    with
+    | ENone _ -> money_of_units_int 0
+    | ESome x -> x
   in
   let base_prorata_3_ : money =
-    try
-      handle_default
+    match
+      handle_exceptions
         [|
           {
             filename = "sources/oracles.catala_fr";
@@ -683,27 +657,14 @@ let pro_rata_arrondi_euro_branchement
             law_headings = ["Calcul de pro-rata"];
           };
         |]
-        [| (fun (_ : unit) -> base_prorata_3_ ()) |]
-        (fun (_ : unit) -> true)
-        (fun (_ : unit) -> money_of_units_int 0)
-    with Empty ->
-      raise
-        (Runtime_ocaml.Runtime.Error
-           ( NoValue,
-             [
-               {
-                 filename = "sources/oracles.catala_fr";
-                 start_line = 88;
-                 start_column = 12;
-                 end_line = 88;
-                 end_column = 26;
-                 law_headings = ["Calcul de pro-rata"];
-               };
-             ] ))
+        [| base_prorata_3_ () |]
+    with
+    | ENone _ -> money_of_units_int 0
+    | ESome x -> x
   in
   let base_prorata_4_ : money =
-    try
-      handle_default
+    match
+      handle_exceptions
         [|
           {
             filename = "sources/oracles.catala_fr";
@@ -714,27 +675,14 @@ let pro_rata_arrondi_euro_branchement
             law_headings = ["Calcul de pro-rata"];
           };
         |]
-        [| (fun (_ : unit) -> base_prorata_4_ ()) |]
-        (fun (_ : unit) -> true)
-        (fun (_ : unit) -> money_of_units_int 0)
-    with Empty ->
-      raise
-        (Runtime_ocaml.Runtime.Error
-           ( NoValue,
-             [
-               {
-                 filename = "sources/oracles.catala_fr";
-                 start_line = 89;
-                 start_column = 12;
-                 end_line = 89;
-                 end_column = 26;
-                 law_headings = ["Calcul de pro-rata"];
-               };
-             ] ))
+        [| base_prorata_4_ () |]
+    with
+    | ENone _ -> money_of_units_int 0
+    | ESome x -> x
   in
   let base_prorata_5_ : money =
-    try
-      handle_default
+    match
+      handle_exceptions
         [|
           {
             filename = "sources/oracles.catala_fr";
@@ -745,27 +693,14 @@ let pro_rata_arrondi_euro_branchement
             law_headings = ["Calcul de pro-rata"];
           };
         |]
-        [| (fun (_ : unit) -> base_prorata_5_ ()) |]
-        (fun (_ : unit) -> true)
-        (fun (_ : unit) -> money_of_units_int 0)
-    with Empty ->
-      raise
-        (Runtime_ocaml.Runtime.Error
-           ( NoValue,
-             [
-               {
-                 filename = "sources/oracles.catala_fr";
-                 start_line = 90;
-                 start_column = 12;
-                 end_line = 90;
-                 end_column = 26;
-                 law_headings = ["Calcul de pro-rata"];
-               };
-             ] ))
+        [| base_prorata_5_ () |]
+    with
+    | ENone _ -> money_of_units_int 0
+    | ESome x -> x
   in
   let base_prorata_6_ : money =
-    try
-      handle_default
+    match
+      handle_exceptions
         [|
           {
             filename = "sources/oracles.catala_fr";
@@ -776,27 +711,14 @@ let pro_rata_arrondi_euro_branchement
             law_headings = ["Calcul de pro-rata"];
           };
         |]
-        [| (fun (_ : unit) -> base_prorata_6_ ()) |]
-        (fun (_ : unit) -> true)
-        (fun (_ : unit) -> money_of_units_int 0)
-    with Empty ->
-      raise
-        (Runtime_ocaml.Runtime.Error
-           ( NoValue,
-             [
-               {
-                 filename = "sources/oracles.catala_fr";
-                 start_line = 91;
-                 start_column = 12;
-                 end_line = 91;
-                 end_column = 26;
-                 law_headings = ["Calcul de pro-rata"];
-               };
-             ] ))
+        [| base_prorata_6_ () |]
+    with
+    | ENone _ -> money_of_units_int 0
+    | ESome x -> x
   in
   let base_prorata_7_ : money =
-    try
-      handle_default
+    match
+      handle_exceptions
         [|
           {
             filename = "sources/oracles.catala_fr";
@@ -807,27 +729,14 @@ let pro_rata_arrondi_euro_branchement
             law_headings = ["Calcul de pro-rata"];
           };
         |]
-        [| (fun (_ : unit) -> base_prorata_7_ ()) |]
-        (fun (_ : unit) -> true)
-        (fun (_ : unit) -> money_of_units_int 0)
-    with Empty ->
-      raise
-        (Runtime_ocaml.Runtime.Error
-           ( NoValue,
-             [
-               {
-                 filename = "sources/oracles.catala_fr";
-                 start_line = 92;
-                 start_column = 12;
-                 end_line = 92;
-                 end_column = 26;
-                 law_headings = ["Calcul de pro-rata"];
-               };
-             ] ))
+        [| base_prorata_7_ () |]
+    with
+    | ENone _ -> money_of_units_int 0
+    | ESome x -> x
   in
   let base_prorata_8_ : money =
-    try
-      handle_default
+    match
+      handle_exceptions
         [|
           {
             filename = "sources/oracles.catala_fr";
@@ -838,27 +747,14 @@ let pro_rata_arrondi_euro_branchement
             law_headings = ["Calcul de pro-rata"];
           };
         |]
-        [| (fun (_ : unit) -> base_prorata_8_ ()) |]
-        (fun (_ : unit) -> true)
-        (fun (_ : unit) -> money_of_units_int 0)
-    with Empty ->
-      raise
-        (Runtime_ocaml.Runtime.Error
-           ( NoValue,
-             [
-               {
-                 filename = "sources/oracles.catala_fr";
-                 start_line = 93;
-                 start_column = 12;
-                 end_line = 93;
-                 end_column = 26;
-                 law_headings = ["Calcul de pro-rata"];
-               };
-             ] ))
+        [| base_prorata_8_ () |]
+    with
+    | ENone _ -> money_of_units_int 0
+    | ESome x -> x
   in
   let base_prorata_9_ : money =
-    try
-      handle_default
+    match
+      handle_exceptions
         [|
           {
             filename = "sources/oracles.catala_fr";
@@ -869,27 +765,14 @@ let pro_rata_arrondi_euro_branchement
             law_headings = ["Calcul de pro-rata"];
           };
         |]
-        [| (fun (_ : unit) -> base_prorata_9_ ()) |]
-        (fun (_ : unit) -> true)
-        (fun (_ : unit) -> money_of_units_int 0)
-    with Empty ->
-      raise
-        (Runtime_ocaml.Runtime.Error
-           ( NoValue,
-             [
-               {
-                 filename = "sources/oracles.catala_fr";
-                 start_line = 94;
-                 start_column = 12;
-                 end_line = 94;
-                 end_column = 26;
-                 law_headings = ["Calcul de pro-rata"];
-               };
-             ] ))
+        [| base_prorata_9_ () |]
+    with
+    | ENone _ -> money_of_units_int 0
+    | ESome x -> x
   in
   let bases_prorata_liste_1_ : money array =
-    try
-      handle_default
+    match
+      handle_exceptions
         [|
           {
             filename = "sources/oracles.catala_fr";
@@ -900,27 +783,14 @@ let pro_rata_arrondi_euro_branchement
             law_headings = ["Calcul de pro-rata"];
           };
         |]
-        [| (fun (_ : unit) -> bases_prorata_liste_1_ ()) |]
-        (fun (_ : unit) -> true)
-        (fun (_ : unit) -> Array.make 0 (money_of_units_int 0))
-    with Empty ->
-      raise
-        (Runtime_ocaml.Runtime.Error
-           ( NoValue,
-             [
-               {
-                 filename = "sources/oracles.catala_fr";
-                 start_line = 95;
-                 start_column = 12;
-                 end_line = 95;
-                 end_column = 33;
-                 law_headings = ["Calcul de pro-rata"];
-               };
-             ] ))
+        [| bases_prorata_liste_1_ () |]
+    with
+    | ENone _ -> Array.make 0 (money_of_units_int 0)
+    | ESome x -> x
   in
   let bases_prorata_liste_2_ : money array =
-    try
-      handle_default
+    match
+      handle_exceptions
         [|
           {
             filename = "sources/oracles.catala_fr";
@@ -931,27 +801,14 @@ let pro_rata_arrondi_euro_branchement
             law_headings = ["Calcul de pro-rata"];
           };
         |]
-        [| (fun (_ : unit) -> bases_prorata_liste_2_ ()) |]
-        (fun (_ : unit) -> true)
-        (fun (_ : unit) -> Array.make 0 (money_of_units_int 0))
-    with Empty ->
-      raise
-        (Runtime_ocaml.Runtime.Error
-           ( NoValue,
-             [
-               {
-                 filename = "sources/oracles.catala_fr";
-                 start_line = 96;
-                 start_column = 12;
-                 end_line = 96;
-                 end_column = 33;
-                 law_headings = ["Calcul de pro-rata"];
-               };
-             ] ))
+        [| bases_prorata_liste_2_ () |]
+    with
+    | ENone _ -> Array.make 0 (money_of_units_int 0)
+    | ESome x -> x
   in
   let bases_prorata_liste_3_ : money array =
-    try
-      handle_default
+    match
+      handle_exceptions
         [|
           {
             filename = "sources/oracles.catala_fr";
@@ -962,27 +819,14 @@ let pro_rata_arrondi_euro_branchement
             law_headings = ["Calcul de pro-rata"];
           };
         |]
-        [| (fun (_ : unit) -> bases_prorata_liste_3_ ()) |]
-        (fun (_ : unit) -> true)
-        (fun (_ : unit) -> Array.make 0 (money_of_units_int 0))
-    with Empty ->
-      raise
-        (Runtime_ocaml.Runtime.Error
-           ( NoValue,
-             [
-               {
-                 filename = "sources/oracles.catala_fr";
-                 start_line = 97;
-                 start_column = 12;
-                 end_line = 97;
-                 end_column = 33;
-                 law_headings = ["Calcul de pro-rata"];
-               };
-             ] ))
+        [| bases_prorata_liste_3_ () |]
+    with
+    | ENone _ -> Array.make 0 (money_of_units_int 0)
+    | ESome x -> x
   in
   let bases_prorata_liste_4_ : money array =
-    try
-      handle_default
+    match
+      handle_exceptions
         [|
           {
             filename = "sources/oracles.catala_fr";
@@ -993,27 +837,14 @@ let pro_rata_arrondi_euro_branchement
             law_headings = ["Calcul de pro-rata"];
           };
         |]
-        [| (fun (_ : unit) -> bases_prorata_liste_4_ ()) |]
-        (fun (_ : unit) -> true)
-        (fun (_ : unit) -> Array.make 0 (money_of_units_int 0))
-    with Empty ->
-      raise
-        (Runtime_ocaml.Runtime.Error
-           ( NoValue,
-             [
-               {
-                 filename = "sources/oracles.catala_fr";
-                 start_line = 98;
-                 start_column = 12;
-                 end_line = 98;
-                 end_column = 33;
-                 law_headings = ["Calcul de pro-rata"];
-               };
-             ] ))
+        [| bases_prorata_liste_4_ () |]
+    with
+    | ENone _ -> Array.make 0 (money_of_units_int 0)
+    | ESome x -> x
   in
   let bases_prorata_liste_5_ : money array =
-    try
-      handle_default
+    match
+      handle_exceptions
         [|
           {
             filename = "sources/oracles.catala_fr";
@@ -1024,27 +855,14 @@ let pro_rata_arrondi_euro_branchement
             law_headings = ["Calcul de pro-rata"];
           };
         |]
-        [| (fun (_ : unit) -> bases_prorata_liste_5_ ()) |]
-        (fun (_ : unit) -> true)
-        (fun (_ : unit) -> Array.make 0 (money_of_units_int 0))
-    with Empty ->
-      raise
-        (Runtime_ocaml.Runtime.Error
-           ( NoValue,
-             [
-               {
-                 filename = "sources/oracles.catala_fr";
-                 start_line = 99;
-                 start_column = 12;
-                 end_line = 99;
-                 end_column = 33;
-                 law_headings = ["Calcul de pro-rata"];
-               };
-             ] ))
+        [| bases_prorata_liste_5_ () |]
+    with
+    | ENone _ -> Array.make 0 (money_of_units_int 0)
+    | ESome x -> x
   in
   let bases_prorata_liste_6_ : money array =
-    try
-      handle_default
+    match
+      handle_exceptions
         [|
           {
             filename = "sources/oracles.catala_fr";
@@ -1055,27 +873,14 @@ let pro_rata_arrondi_euro_branchement
             law_headings = ["Calcul de pro-rata"];
           };
         |]
-        [| (fun (_ : unit) -> bases_prorata_liste_6_ ()) |]
-        (fun (_ : unit) -> true)
-        (fun (_ : unit) -> Array.make 0 (money_of_units_int 0))
-    with Empty ->
-      raise
-        (Runtime_ocaml.Runtime.Error
-           ( NoValue,
-             [
-               {
-                 filename = "sources/oracles.catala_fr";
-                 start_line = 100;
-                 start_column = 12;
-                 end_line = 100;
-                 end_column = 33;
-                 law_headings = ["Calcul de pro-rata"];
-               };
-             ] ))
+        [| bases_prorata_liste_6_ () |]
+    with
+    | ENone _ -> Array.make 0 (money_of_units_int 0)
+    | ESome x -> x
   in
   let bases_prorata_liste_7_ : money array =
-    try
-      handle_default
+    match
+      handle_exceptions
         [|
           {
             filename = "sources/oracles.catala_fr";
@@ -1086,27 +891,14 @@ let pro_rata_arrondi_euro_branchement
             law_headings = ["Calcul de pro-rata"];
           };
         |]
-        [| (fun (_ : unit) -> bases_prorata_liste_7_ ()) |]
-        (fun (_ : unit) -> true)
-        (fun (_ : unit) -> Array.make 0 (money_of_units_int 0))
-    with Empty ->
-      raise
-        (Runtime_ocaml.Runtime.Error
-           ( NoValue,
-             [
-               {
-                 filename = "sources/oracles.catala_fr";
-                 start_line = 101;
-                 start_column = 12;
-                 end_line = 101;
-                 end_column = 33;
-                 law_headings = ["Calcul de pro-rata"];
-               };
-             ] ))
+        [| bases_prorata_liste_7_ () |]
+    with
+    | ENone _ -> Array.make 0 (money_of_units_int 0)
+    | ESome x -> x
   in
   let bases_prorata_liste_8_ : money array =
-    try
-      handle_default
+    match
+      handle_exceptions
         [|
           {
             filename = "sources/oracles.catala_fr";
@@ -1117,27 +909,14 @@ let pro_rata_arrondi_euro_branchement
             law_headings = ["Calcul de pro-rata"];
           };
         |]
-        [| (fun (_ : unit) -> bases_prorata_liste_8_ ()) |]
-        (fun (_ : unit) -> true)
-        (fun (_ : unit) -> Array.make 0 (money_of_units_int 0))
-    with Empty ->
-      raise
-        (Runtime_ocaml.Runtime.Error
-           ( NoValue,
-             [
-               {
-                 filename = "sources/oracles.catala_fr";
-                 start_line = 102;
-                 start_column = 12;
-                 end_line = 102;
-                 end_column = 33;
-                 law_headings = ["Calcul de pro-rata"];
-               };
-             ] ))
+        [| bases_prorata_liste_8_ () |]
+    with
+    | ENone _ -> Array.make 0 (money_of_units_int 0)
+    | ESome x -> x
   in
   let bases_prorata_liste_9_ : money array =
-    try
-      handle_default
+    match
+      handle_exceptions
         [|
           {
             filename = "sources/oracles.catala_fr";
@@ -1148,23 +927,10 @@ let pro_rata_arrondi_euro_branchement
             law_headings = ["Calcul de pro-rata"];
           };
         |]
-        [| (fun (_ : unit) -> bases_prorata_liste_9_ ()) |]
-        (fun (_ : unit) -> true)
-        (fun (_ : unit) -> Array.make 0 (money_of_units_int 0))
-    with Empty ->
-      raise
-        (Runtime_ocaml.Runtime.Error
-           ( NoValue,
-             [
-               {
-                 filename = "sources/oracles.catala_fr";
-                 start_line = 103;
-                 start_column = 12;
-                 end_line = 103;
-                 end_column = 33;
-                 law_headings = ["Calcul de pro-rata"];
-               };
-             ] ))
+        [| bases_prorata_liste_9_ () |]
+    with
+    | ENone _ -> Array.make 0 (money_of_units_int 0)
+    | ESome x -> x
   in
   let bases_prorata =
     Array.make