Books / Law as Code in Practice: French Family Benefits / Chapter 3

Part II · Chapter 3

Parameters and Revaluation: The BMAF and the Yearly Instruction

3 min read

Full-page risograph illustration: a tall stack of blank sheets on a grid, tied with a blue thread in a bow.
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

  1. Which value is a percentage rate: 2.2975 or €478.16?
  2. Does the cohort run prove that every benefit was updated automatically?
  3. What identifies the text behind the parameter row?

Contents · PDF · EPUB · Free under CC BY 4.0

Law as Code in Practice: French Family Benefits

Contents

You’re reading · Part II

How the Model Is Built

Reading settings

Text size
Appearance

Preferences and your reading place are saved only in this browser.