Books / Law as Code in Practice: French Family Benefits / Chapter 3
Part II · Chapter 3
Parameters and Revaluation: The BMAF and the Yearly Instruction

Contents of Law as Code in Practice: French Family Benefits
By the end you can distinguish a legal rate, an annual base and a family’s case input.
Lawyer: the text behind a value.
Analyst: which benefits move with the base.
Developer: a parameter’s type, time axis and validity window.
The Garniers’ question
“Why did the base change in April, when our household did not?” Predict which thing must change: the family’s facts, the percentage in the birth-grant rule, or the annual BMAF.
Base mensuelle de calcul des allocations familiales → monthly base for family allowances → BMAF. The revaluation model calls its computed value bmaf_revalorisee; the family-allowance file receives the retained base as bmaf_retenu.
The published instruction
The pinned DSS/2B/2026/46 instruction says, for 1 April 2026:
le coefficient de revalorisation de la base mensuelle des allocations familiales (BMAF) … est fixé à 1,008
English gloss: the coefficient revaluing the BMAF is set at 1.008. Its table specifies Arrondis au centième d’euro le plus proche: rounded to the nearest euro cent. This instruction applies the mechanism of L. 161-25 and L. 551-1 CSS; it does not give its author freedom to choose a different statutory mechanism.
From coefficient to base
rule BmafChaine(e: Exercice, base: Money, c: Decimal) strict {
effective [@2016-01-01, infinity);
when bmaf_precedente(e, base) and coefficient_retenu(e, c);
then bmaf_revalorisee(e, round(base * c, 2, "HALF_UP"));
}
Labels and source anchors are left out. A preceding rule retains the coefficient at its nominal value when it is at least one; another raises a coefficient below one to one. The source anchors bind that statutory floor and the instruction’s published coefficient to their texts.
| Question | Established answer |
|---|---|
| Coefficient retained for 2026 | 1.008 |
| Revalued BMAF from €474.37 | €478.16 |
| Martin, two children, no age supplements | €153.01 monthly AF |
| Bernard, three children, no age supplements | €349.06 monthly AF |
| Petit, four children, no age supplements | €545.10 monthly AF |
Recorded on 11 October 2026 with law 0.1.12. The BMAF chain is tested separately. The three fictional households use the named reading fr.pf.af::ArrondiLignesDss. Their answers concern gross monthly AF before CRDS. Each household file supplies the BMAF as an input; these queries do not establish entitlement to every benefit.
A parameter is more than a number
Return to the birth-grant rate from Chapter 2. Here is a shortened JSON record from its parameter dataset:
{
"parameter": "urn:fr:corpus:clir:pf-paje#TauxPrimeNaissance",
"timeAxis": "legal_time",
"coverage": {
"start": "2021-01-01",
"endExclusive": null
},
"values": [
{
"valid": {
"start": "2021-01-01",
"endExclusive": null
},
"value": {
"kind": "value",
"type": {
"name": "urn:law:std#Decimal"
},
"value": "2.2975"
},
"anchors": [
"urn:fr:corpus:clir:pf-paje#CSS_D531_2_ED2015_01",
"urn:fr:corpus:clir:pf-paje#CSS_D531_2_ED2021_04"
]
}
]
}
This excerpt leaves out the dataset identifier and labels. legal_time selects the row. The end is open; the two source anchors identify the pinned editions of D. 531-2. The annual BMAF and the grant percentage have different jobs: a new base can change an amount without changing the rate rule.
Change one thing
Compare three separate household files. Their child counts and annual resources differ, although all three fall within the full-rate band. With the same BMAF and no age supplements, their monthly AF amounts follow the rates for their respective child counts. Chapter 14 changes the base in copies of the same three files and measures the consequences; today we establish where the parameter and the base come from.
What this gives the fund
The annual instruction can be checked once against its legal mechanism, then the retained value can be traced in each household calculation. A reviewer can distinguish a rate change, a base change and a data-entry change before investigating an amount.
Where Catala stands on this
Catala supports exact decimal arithmetic and a documented testing workflow. Arxo provides a built-in parameter dataset with validity windows and source anchors. The Catala 1.3.0 book does not describe this dataset form; teams can represent values and dates in their programs and document the legal sources. For reviewers, Arxo brings the value, validity window and source references together in a parameter record. The fund can inspect whether an amount changed because of a new row, a revised base or a household input before reviewing the calculation.
Recording the answers
From a local checkout with law installed, start at the repository root:
law test corpus/laws/fr/revalorisation --file tests/bmaf-chaine-2026.lawtest --json
cd corpus/laws/fr/pf-af/examples/cohorte-revalorisation
law ask . --case Martin --query-json queries/Martin-amount.json --out "$(mktemp -d)"
The instruction scene preserves the 9 October 2026 demonstration. Today’s local checks used the current declared scenario and the three saved cohort files.
Exercise
- Which value is a percentage rate: 2.2975 or €478.16?
- Does the cohort run prove that every benefit was updated automatically?
- What identifies the text behind the parameter row?