{
  "tool_id": "art-231-compute-mla-mapr",
  "tool_version": "2.0.0",
  "display_name": "Compute MLA MAPR (closed-end)",
  "mcp_name": "compute_mla_mapr",
  "mandate_type": "compliance_mandate",
  "wave": 39,
  "gpu": false,
  "url": "https://ainumbers.co/chaingraph/art-231-compute-mla-mapr.html",
  "description": "Computes the Military Annual Percentage Rate for CLOSED-END consumer credit and tests it against the 36 percent limit that 10 USC 987(b) imposes and 32 CFR 232.4(b) sets out. 32 CFR 232.4(c)(2)(i) directs that a closed-end MAPR is calculated by Regulation Z's own rules for the annual percentage rate, based on the wider charge set in 232.4(c)(1), so this node solves the Appendix J actuarial equation from a cash-flow schedule instead of dividing charges by an original principal. A fraction of a unit-period is priced at simple interest per Appendix J (b)(6), only whole unit-periods compound, and the annual figure is the unit-period rate multiplied by the unit-periods in a year per (b)(1). A single advance repaid by a single payment takes its term as the unit-period per (b)(4)(ii), with 365 divided by the days in the term as the unit-periods per year per (b)(5)(vi) and (b)(5)(vii), so the term is day-granular and a 45-day loan is expressible rather than quantised to whole months. Every charge 232.4(c)(1) includes carries its own input: credit insurance premiums, debt cancellation contract fees and debt suspension agreement fees under (c)(1)(i), credit-related ancillary product fees under (c)(1)(ii), finance charges under (c)(1)(iii)(A), application fees under (c)(1)(iii)(B), and participation fees under (c)(1)(iii)(C). Each of them moves the reported rate. The application-fee exception in (c)(1)(iii)(B) is evaluated as the three conjunctive predicates the text states, a Federal credit union or insured depository institution creditor, a short-term small amount loan, and a fee charged not more than once in any rolling 12-month period; with anything less than all three the fee stays in. SCOPE, stated plainly: open-end credit is OUT OF SCOPE. 32 CFR 232.4(c)(2)(ii)(A) prices open-end credit on the balance for a billing cycle under 12 CFR 1026.14(c) and (d), and 232.4(c)(2)(ii)(B) governs a billing cycle with no balance. Neither is computed here, and a call declaring an open-end class or a credit card account returns no rate rather than a closed-end number. Because the bona fide fee exclusion in 232.4(d)(1) reaches only a credit card account under an open-end plan, no such exclusion is available on this path, so a caller-declared bona fide amount is recorded and included anyway. A charge is modelled as collected at consummation and deducted from the amount financed, except a finance charge, which is carried by the payment schedule and never deducted twice. A rate is reported only when a sign-change bracket was established and narrowed, so a schedule with no non-negative rate returns no figure rather than a guess. A schedule of more than 600 payments is out of scope and also returns no rate: that ceiling is a declared structural limit of this node, not a rule of law, and it keeps the work done per call bounded by a constant rather than by a caller-supplied payment count. RELATED NODE, so the two MLA MAPR nodes are told apart: this node DERIVES the payment schedule itself from described loan terms, an amount advanced repaid either by a single payment at a stated term in days or by a level installment series, so it is the one to reach for when the cash flows are not already in hand. Where a caller ALREADY HOLDS the cash flows, art-616-mla-mapr-actuarial-recompute recomputes the same closed-end MAPR by the same Appendix J actuarial method directly from those caller-supplied cash flows and charges, deriving no schedule of its own. DoD MLA rule 80 FR 43560 (22 July 2015): effective 1 October 2015, compliance required from 3 October 2016 and from 3 October 2017 for credit card accounts.",
  "input_schema_ref": "chaingraph/art-231-compute-mla-mapr.html#manifest",
  "consumes": [],
  "feeds": [
    "art-232-compute-scra-rate-cap"
  ],
  "status": "live",
  "conformance_fixtures": true,
  "compute_capability": "server",
  "standards_basis": "implements_standard",
  "cited_clause_digest": [
    {
      "digest": "sha256:e3890b4f3b32cdd2254b18c2313f4d9365b9b4d5b157ffe3f281280e39dd01e0",
      "source_url": "https://www.ecfr.gov/api/versioner/v1/full/2026-08-01/title-32.xml?part=232",
      "retrieved_at": "2026-08-14",
      "clause_path": "32 CFR 232.4(c)-(d)",
      "scheme": "cfr",
      "id": "32 CFR 232.4"
    },
    {
      "digest": "sha256:a558362611d0ca8dcfc5c1526c76ddfa721e0804d9346a49116e829d7586ca9b",
      "source_url": "https://www.consumerfinance.gov/rules-policy/regulations/1026/j/",
      "retrieved_at": "2026-08-16",
      "clause_path": "12 CFR 1026 Appendix J (a)(2) -- actuarial-method balance recurrence, authority for rounding_steps 4 (principal_component) and 5 (closing_balance)",
      "scheme": "cfr",
      "id": "12 CFR 1026 Appendix J"
    },
    {
      "digest": "sha256:b523793b29e30669d51a91b8e093010d2b9ffeb35763f10cd20ea5fc8811a960",
      "source_url": "https://www.consumerfinance.gov/rules-policy/regulations/1026/j/",
      "retrieved_at": "2026-08-15",
      "clause_path": "12 CFR 1026 Appendix J (b)(6) -- stub-period fraction pricing precedent for UNIT_PERIOD",
      "scheme": "cfr",
      "id": "12 CFR 1026 Appendix J"
    },
    {
      "digest": "sha256:8fd3e1dae10793badbe6c871a6d2aa2d169a1a664f0e0ead79dc241e7216d7f5",
      "source_url": "https://www.federalregister.gov/documents/full_text/text/2015/07/22/2015-17480.txt",
      "retrieved_at": "2026-08-22",
      "clause_path": "III.D.3 Computing the MAPR (Examples 1-3)",
      "scheme": "fr",
      "id": "80 FR 43583"
    },
    {
      "digest": "sha256:cb90bdbdd00a98af6066dc502b7ce73850cdb0751d4a7aab44723811ea72bd4f",
      "source_url": "https://www.federalregister.gov/documents/full_text/text/2015/07/22/2015-17480.txt",
      "retrieved_at": "2026-08-22",
      "clause_path": "RIA n.347 installment-loan worked example",
      "scheme": "fr",
      "id": "80 FR 43603"
    },
    {
      "digest": "sha256:72911317869c2eeba2634a535283a0bccad4f58ccd5136c9170ba7c4dd01eab7",
      "source_url": "https://files.consumerfinance.gov/f/documents/092016_cfpb_MLAExamManualUpdate.pdf",
      "retrieved_at": "2026-08-22",
      "clause_path": "MLA 9-10, MAPR Calculation Examples #1-#3",
      "scheme": "cfpb",
      "id": "CFPB Supervision and Examination Manual, MLA (Sept 2016)"
    }
  ],
  "compute_images": [
    {
      "system": "sha256-source",
      "image_id": "sha256:302410302655744df0ba87706c7aa12347ad96fd99d175c3ed1d497372abc0d0",
      "valid_from": "2026-07-10"
    },
    {
      "system": "risc0",
      "image_id": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
      "valid_from": "2026-07-04"
    }
  ],
  "export_capability": [
    "json"
  ],
  "compute_proof_ready": "ready",
  "compute_proof": {
    "type": "ZkVmReceipt",
    "system": "risc0",
    "receiptFormat": "groth16-bn254",
    "imageId": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
    "seal": "GxdnLxWwwkcDQ7cWEpdDgXTjQ8MEhAjJFgbSmk6kXDEN+CFzUldQI/4I94H0yrdHKCLEAnIp41zxd7i1sNDt+Qt8BVIQmonP73PS84tOwhKdyavxfr0hXyBK7fXbPiz7GEtoUUFLkBt/sapm8+rtRENumSHKTTDz82fUblGKftEslg/OWnJ7z7BfUz+cDkDuxbzfRDsA661uyY6yB78NhwDBUBKsB/tJF4FMb1xRGLGjwU9TbJxpwdx58ONg03nTE8HQJu2xxQUj+fCjG+CJfazzuY8/cSh5Kvrm9zLRBqMbGX9JH9HqT3N6qDd1GN0SbUBRoKZRCVjkBHgdOWTWaw==",
    "journal": {
      "chaingraph_version": "0.4.0",
      "kernel_digest": "sha256:302410302655744df0ba87706c7aa12347ad96fd99d175c3ed1d497372abc0d0",
      "output": {
        "amount_advanced": 500,
        "amount_financed_mapr": 500,
        "application_fee_carve_out_applied": false,
        "application_fee_carve_out_predicates": {
          "application_fee_once_in_rolling_12_months": false,
          "creditor_is_fcu_or_idi": false,
          "is_short_term_small_amount_loan": false
        },
        "approaching_cap_threshold_basis": "House heuristic, declared. No authority states a 30 percent warning line; it is named here so a reader can see it is ours and not the regulation.",
        "approaching_cap_threshold_pct": 30,
        "bona_fide_exclusion_available": false,
        "bona_fide_fee_claimed_total": 0,
        "bracketed": true,
        "charge_breakdown": [
          {
            "amount": 0,
            "citation": "32 CFR 232.4(c)(1)(i)",
            "field": "credit_insurance_premium_total",
            "included": true,
            "treatment": "collected_at_consummation"
          },
          {
            "amount": 0,
            "citation": "32 CFR 232.4(c)(1)(i)",
            "field": "debt_cancellation_fee_total",
            "included": true,
            "treatment": "collected_at_consummation"
          },
          {
            "amount": 0,
            "citation": "32 CFR 232.4(c)(1)(i)",
            "field": "debt_suspension_fee_total",
            "included": true,
            "treatment": "collected_at_consummation"
          },
          {
            "amount": 0,
            "citation": "32 CFR 232.4(c)(1)(ii)",
            "field": "ancillary_product_fee_total",
            "included": true,
            "treatment": "collected_at_consummation"
          },
          {
            "amount": 28.44,
            "citation": "32 CFR 232.4(c)(1)(iii)(A)",
            "field": "finance_charge_total",
            "included": true,
            "treatment": "carried_by_payment_schedule"
          },
          {
            "amount": 0,
            "citation": "32 CFR 232.4(c)(1)(iii)(B)",
            "field": "application_fee",
            "included": true,
            "treatment": "collected_at_consummation"
          },
          {
            "amount": 0,
            "citation": "32 CFR 232.4(c)(1)(iii)(C)",
            "field": "participation_fee_annual",
            "included": true,
            "treatment": "collected_at_consummation"
          },
          {
            "amount": 0,
            "citation": "32 CFR 232.4(d)(1)",
            "field": "bona_fide_fee_claimed_total",
            "included": true,
            "treatment": "collected_at_consummation"
          }
        ],
        "converged": true,
        "credit_class": "closed_end",
        "exceeds_cap": true,
        "finance_charge_in_schedule": 28.44,
        "in_scope": true,
        "iterations": 25,
        "mapr_cap_pct": 36,
        "mapr_determined": true,
        "mapr_pct": 46.14,
        "max_payment_count": 600,
        "method_basis": "Appendix J to 12 CFR part 1026: (a)(2) actuarial recurrence on the unpaid balance; (b)(1) annualise by multiplying the unit-period rate by the unit-periods in a year; (b)(4)(ii) the unit-period of a single advance, single payment transaction is its term, capped at one year; (b)(5)(ii) a monthly unit-period has 12 unit-periods per year; (b)(5)(vi) and (b)(5)(vii) a sub-year single advance, single payment term has one unit-period and 365 divided by the days in the term unit-periods per year; (b)(5)(v)(B) a remaining interval that is not a whole number of months is the remaining days divided by 365; (b)(6) a fraction of a unit-period is priced at simple interest, so only whole unit-periods compound and no base is raised to a fractional power. Accuracy target: the one eighth of one percentage point tolerance in 12 CFR 1026.22(a)(2).",
        "payment_amount": 528.44,
        "payment_count": 1,
        "payment_count_exceeds_limit": false,
        "payment_structure": "single_payment",
        "payment_total": 528.44,
        "periodic_rate": 0.05688,
        "pii_note": "All inputs are processed locally in your browser. No data is transmitted.",
        "prepaid_includable_charges": 0,
        "regulatory_basis": "10 USC 987(b) and 32 CFR 232.4(b) set the 36 percent MAPR limit. 32 CFR 232.4(c)(1) sets the charge set. 32 CFR 232.4(c)(2)(i) directs that a closed-end MAPR is calculated by Regulation Z rules for the annual percentage rate over that charge set, which are 12 CFR 1026.22(a)(1) and Appendix J to 12 CFR part 1026. DoD MLA rule 80 FR 43560 (22 Jul 2015): effective 1 Oct 2015, compliance required 3 Oct 2016, and 3 Oct 2017 for credit card accounts.",
        "scope_note": "CLOSED-END consumer credit only. Open-end credit, including every credit card account, is OUT OF SCOPE: 32 CFR 232.4(c)(2)(ii)(A) prices it on the balance for a billing cycle under 12 CFR 1026.14(c) and (d), and 32 CFR 232.4(c)(2)(ii)(B) governs a billing cycle with no balance. Neither is computed here, and a call declaring an open-end class or a credit card account returns no rate rather than a closed-end number. The bona fide fee exclusion in 32 CFR 232.4(d)(1) reaches a credit card account under an open-end plan only, so it is unavailable on this path and a caller-declared bona fide amount is included anyway. Charges are modelled as collected at consummation and deducted from the amount financed, except a finance charge, which is carried by the payment schedule; a structure in which an includable charge is instead financed into the payments is out of scope. A schedule of more than 600 payments is also out of scope and returns no rate: that ceiling is a declared structural limit of this node, not a rule of law, and it exists so the work done inside compute() is bounded by a constant rather than by a caller-supplied payment count.",
        "table_source": "10 USC 987(b); 32 CFR 232.4(b) limit; 32 CFR 232.4(c)(1)(i) to (iii) charge set; 32 CFR 232.4(c)(1)(iii)(B) Federal credit union and insured depository institution application-fee carve-out; 32 CFR 232.4(c)(2)(i) closed-end computation method; 32 CFR 232.4(d)(1) and (d)(2) bona fide fee exclusion and its ineligible items; 12 CFR 1026.22(a) and Appendix J to 12 CFR part 1026 (eCFR versioner, retrieved 2026-08-14); worked examples 80 FR 43583 and 80 FR 43603 n.347 (retrieved 2026-08-22), republished at CFPB Supervision and Examination Manual, MLA (Sept 2016), pp. MLA 9 to 10.",
        "table_version": "MLA-DOD-32CFR232-2015-10-01",
        "term_days": 45,
        "total_excluded_charges": 0,
        "total_includable_charges": 28.44,
        "unit_periods_per_year": 8.111111
      }
    }
  }
}
