Geneva Flips One Sign: The 16.5 % Floor on Its Cheapest Housing Becomes a Ceiling
Geneva's Grand Conseil turned the 16.5 % HBM minimum in development zones into a maximum. What one flipped sign means for PLQ programmes and area schedules.
A Geneva development zone is a bargain written in arithmetic. Under the loi générale sur les zones de développement (LGZD) of 29 June 1957, the canton lets a site carry more density than its base zone allows. In return, the housing programme is fixed in ratios. According to ATS, roughly one third of new dwellings must be public-utility housing (LUP), and HBM, the cheapest and most supported category, is tied to half of that third. That share, written as 16.5 %, has worked as a floor. On Thursday 29 October 2026, the Grand Conseil voted to make it a ceiling.
One operator, inverted
Bill PL 13694, Pour une meilleure mixité sociale dans nos quartiers, was filed on 23 September 2025 by Sébastien Desfayes with 13 co-signatories. In LGZD art. 4A al. 2, HBM becomes “la moitié … au maximum” of the LUP programme, which should include at least a fifth of PPE ownership flats in principle. In art. 4B al. 3, HBM may be at most “une part maximale de 16,5%” of dwellings on land owned by the State, a commune or a public-law foundation. Read it as a system diagram: the constant stays, the comparison flips from ≥ to ≤, and every future plan localisé de quartier (PLQ) in a development zone solves a different inequality. ATS reports the vote at 59 to 40.
20 minutes reports that the planned HBM share on public land in Praille-Acacias-Vernets (PAV) falls from 24 % to 16.5 %, with HBM at 5.2 % of Geneva’s housing. The market around this is tight. OCSTAT counted 793 vacant dwellings in the canton on 1 June 2026, a rate of 0.31 %, falling for the second year in a row.
Two readings of the same constant
The bill’s exposé des motifs argues that social mix “se construit par des équilibres chiffrés, visibles et crédibles”. Jean-Pierre Pasquiers (PLR) pointed to families on modest wages: “Les familles à bas salaires sont les grandes oubliées de notre politique du logement.” Nicolas Walder, Conseiller d’État for the Département du territoire, said the government opposes the change: “Il y a des listes d’attente pour les HBM.” Caroline Marti (PS) recalled that voters have validated the PAV categories twice, and said her party is ready to launch a referendum. That referendum has been announced, not filed. The amendment takes effect only after promulgation, and only if no referendum stops it.
The trade-off is plain. A ceiling protects the mix on each plan, and it also caps the one category the waiting lists ask for. Zürich is testing the opposite sign. Its draft BZO revision, in consultation since March 2026, proposes that 75 % of the extra volume created by upzoning go to affordable housing. That is a floor. Same shortage, opposite operators.
←TODAY: On 29 Oct 2026 Geneva’s parliament voted to turn the 16.5 % HBM floor into a ceiling, and a referendum has been announced.
→3012: Zurich-3012 plans carry every housing ratio as a versioned parameter, so a sign flip ships as a diff instead of a redraw.
Fulcrum: The number did not change, only the operator did, and a programme model has to be able to show that difference.
PAZ has read a city as a rule set before. In Kalkbreite, read from the rails up, Zürich’s cooperative rules (31.2 m² per resident, at least one person per bedroom) were design inputs from the first sketch. Geneva’s category mix works the same way at canton scale: it sets the floor-area table, the unit mix around each core and the financing plan.
Atelier: An office with a Geneva PLQ in progress may now be designing a programme under one rule and delivering it under another, depending on how the referendum goes. Teams that let AI tools draft area schedules face the same risk, only faster: a model trained on “at least” will keep writing “at least”. Monday move: open the area schedule of every live development-zone project and add one cell that records which version of art. 4A/4B it implements.
Hack: Turn the canton’s housing ratios into named, dated inputs on gross floor area, so the operator sits in a single line you can change. In a GhPython component in Grasshopper + Rhino, feed residential GFA and your target HBM area in as inputs:
RULE = {"date": "2026-10-29", "lup": 1/3, "hbm_of_lup": 0.5, "ppe": 0.2}
lup = gfa * RULE["lup"] # public-utility housing, m2
hbm = min(hbm_target, lup * RULE["hbm_of_lup"]) # PL 13694: a ceiling
ppe = gfa * RULE["ppe"] # PPE, a fifth in principle
a = [RULE["date"], lup, hbm, ppe]Swap min for max and you are back on the old floor; every core count and unit mix downstream re-runs on its own. The PAZ Grasshopper↔Archicad Library can carry those shares into the Archicad zone schedule as properties, so drawings and area table cite the same rule date.
Treat your programme as a rule set before the next sign changes: give each share a name and a date, and make it re-runnable.
Sources & Further Reading
PAZ Kaffi · multidisciplinary editorial, led by PAZ Academy