Inside the RAF | Fixing South Africa’s broken Road Accident Fund will be no easy task
Inside the RAF | Fixing South Africa’s broken Road Accident Fund will be no easy task



Replacing or reforming South Africa’s troubled Road Accident Fund (RAF) will be a significant challenge, experts say, due to systemic failures that have plagued the institution and its predecessors.

Established to protect those injured or killed on the country’s roads from financial ruin, the RAF is funded through a fuel levy of R2.18 per litre. The fund was originally designed to provide support to all victims, regardless of fault.

However, the levy has remained unchanged since 2019, despite rising medical and legal costs. As a result, the RAF’s liabilities now exceed R518 billion, with assets of just R33 billion—meaning it owes roughly 15 times more than it owns.

The Auditor-General has repeatedly warned that the RAF’s finances are “not fairly presented”, citing “material uncertainty” over its ability to continue operating.

Poor governance and corruption

Many victims and civil society organisations say the RAF has failed to deliver justice.

Over the years, the fund has become embroiled in disputes involving lawyers, claimants, and the state, with funds allegedly diverted away from crash victims.

Speaking to IOL News, Professor Pfano Mashau of the Durban University of Technology, an expert in governance and economic development, described the RAF as emblematic of a broader public sector crisis.

“Public entities are losing billions annually due to poor governance, procurement failures and weak financial management,” Mashau said. “The Road Accident Fund is among the most concerning cases.”

Despite billions collected annually via the fuel levy, he noted that spiralling admin costs, legal fees and PR contracts have cast doubt on the fund’s accountability.

“The leadership is watching the ship sink rather than steering it forward,” he added, criticising the lack of a standardised methodology or performance measures.

Mashau cited regular breaches of the Public Finance Management Act (PFMA), including irregular, unauthorised and wasteful expenditure. These reportedly include contract irregularities, improper payments, and penalties for late payments.

He blamed “weak internal controls, political interference and a lack of consequence management” for the RAF’s decline.

/**
* RAFInfographic Custom Web Component
*
* This block is entirely self-contained. It registers the element
* and encapsulates all HTML, CSS, and JS logic within its Shadow DOM.
* It uses a dark, colorful theme.
*/
class RAFInfographic extends HTMLElement {
constructor() {
super();
// Attach Shadow DOM for encapsulation
this.attachShadow({ mode: ‘open’ });
}

// Static data model for the infographic
static data = {
title: “RAF by the numbers”,
subtitle: “Key financial and operational figures”,
metrics: [
{ label: “Liabilities”, value: “R518 billion”, context: “total amount owed by RAF to claimants and other parties.”, type: “danger” },
{ label: “Assets”, value: “R33 billion”, context: “total physical and liquid assets owned by the RAF.”, type: “success” },
{ label: “Owes vs owns”, value: “15:1”, context: “RAF owes about 15 times more than it owns (Liabilities vs assets ratio).”, type: “warning” },
{ label: “Levy per litre”, value: “R2.18”, context: “Fuel levy rate, which has remained unchanged since 2019, adding pressure as costs rise.”, type: “neutral” }
],
deficit: {
startYear: “2020/21”, startValue: “R13.6 billion”,
endYear: “2024/25”, endValue: “R27.8 billion”,
label: “Deficit more than doubled”
},
risks: [
{ text: “5 consecutive audit disclaimers/adverse opinions”, context: “Indicates severe issues with financial reporting and controls.”, type: “chip-danger” },
{ text: “Default judgments: R1.6bn → nearly R4bn in one year”, context: “Rapid growth suggests administrative and legal system strain.”, type: “chip-warning” },
{ text: “Irregularities: R42 million”, context: “Unauthorised banking detail changes and overpaid claims identified.”, type: “chip-warning” }
],
cashflow: [
{ label: “Collected via levy (annual)”, value: “nearly R50 billion”, context: “Total annual collections from the fuel levy.”, type: “cash-in” },
{ label: “Disbursed since April”, value: “R17.3 billion”, context: “Total claims paid out in the current financial period.”, type: “cash-out” },
{ label: “Record day payout”, value: “R694 million”, context: “Record payouts recorded in a single day.”, type: “cash-out” },
{ label: “September disbursement”, value: “R4.18 billion”, context: “Claims paid out during the month of September.”, type: “cash-out” }
],
footer: “Source: analysis of RAF-related reporting and parliamentary briefings.”
};

// Returns the HTML structure and scoped styles for the Shadow DOM
getTemplate() {
const data = RAFInfographic.data;

// — SCOPED CSS (Crucial for encapsulation) —
const style = `
:host {
display: block;
width: 100%;
max-width: 720px;
box-sizing: border-box;
font-family: -apple-system, BlinkMacSystemFont, “Segoe UI”, Roboto, Helvetica, Arial, sans-serif;
color: var(–raf-color-text, #f3f4f6);
}

/* CSS Variables for a neutral palette (DARK THEME – MORE COLORFUL) */
:host {
–raf-color-text: #f3f4f6; /* Light grey text */
–raf-color-subtle: #9ca3af; /* Muted light grey subtle text */
–raf-color-bg-card: #1a1a1a; /* Deep charcoal background */
–raf-color-border: #3f3f3f; /* Dark grey border */
–raf-color-bg-secondary: #262626; /* Slightly lighter dark for elements */

/* Vibrant Accent Colors */
–raf-color-accent: #34D399; /* Vibrant Green for Success */
–raf-color-warning: #FACC15; /* Vibrant Yellow/Amber for Warning */
–raf-color-danger: #F87171; /* Vibrant Red for Danger/Critical */
}

.card {
background-color: var(–raf-color-bg-card);
border: 1px solid var(–raf-color-border);
border-radius: 8px;
padding: 16px;
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.4);
box-sizing: border-box;
}

/* — Header — */
.header h1 {
font-size: 1.5rem;
font-weight: 700;
margin: 0 0 4px 0;
}
.header p {
font-size: 0.9rem;
color: var(–raf-color-subtle);
margin: 0 0 16px 0;
}

/* — KPI Grid — */
.kpi-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 12px;
margin-bottom: 24px;
}
@media (min-width: 600px) {
.kpi-grid {
grid-template-columns: repeat(4, 1fr);
gap: 16px;
}
}

.kpi-item {
display: flex;
flex-direction: column;
padding: 12px;
border-radius: 6px;
background-color: var(–raf-color-bg-secondary);
border: 1px solid var(–raf-color-border);
cursor: help;
position: relative;
transition: background-color 0.2s;
}

/* Apply distinct, bold left borders based on type for visual pop */
.kpi-item[data-type=”danger”] { border-left: 4px solid var(–raf-color-danger); }
.kpi-item[data-type=”warning”] { border-left: 4px solid var(–raf-color-warning); }
.kpi-item[data-type=”success”] { border-left: 4px solid var(–raf-color-accent); }
.kpi-item[data-type=”neutral”] { border-left: 4px solid var(–raf-color-subtle); }

.kpi-item:hover {
background-color: #333333; /* Slightly lighter dark on hover */
}

.kpi-label {
font-size: 0.75rem;
font-weight: 500;
text-transform: uppercase;
color: var(–raf-color-subtle);
margin-bottom: 4px;
}
.kpi-value {
font-size: 1.25rem;
font-weight: 700;
line-height: 1.2;
}
/* Highlight colors for values */
.kpi-item[data-type=”danger”] .kpi-value, .risk-section .risk-chip[data-type=”chip-danger”] {
color: var(–raf-color-danger);
}
.kpi-item[data-type=”warning”] .kpi-value, .risk-section .risk-chip[data-type=”chip-warning”] {
color: var(–raf-color-warning);
}
.kpi-item[data-type=”success”] .kpi-value {
color: var(–raf-color-accent);
}

/* — Timeline/Change Section (Deficit) — */
.timeline-section {
margin-bottom: 24px;
/* Apply strong danger border to highlight deficit crisis */
border: 1px solid var(–raf-color-danger);
border-radius: 6px;
padding: 12px;
background-color: var(–raf-color-bg-secondary);
}
.timeline-layout {
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: 8px;
}
.timeline-item {
text-align: center;
flex: 1 1 30%;
min-width: 100px;
}
.timeline-label {
font-size: 0.8rem;
color: var(–raf-color-subtle);
}
.timeline-value {
font-size: 1.1rem;
font-weight: 600;
color: var(–raf-color-danger); /* Deficit value remains danger color */
}
.timeline-arrow {
color: var(–raf-color-subtle);
font-size: 1.5rem;
font-weight: 300;
margin: 0 8px;
}
.timeline-summary {
font-size: 0.85rem;
font-style: italic;
color: var(–raf-color-danger);
margin-top: 8px;
flex-basis: 100%;
text-align: center;
}

/* — Risk/Pressure (Bullet Chips) — */
.risk-section h2 {
font-size: 1rem;
margin: 0 0 12px 0;
}
.risk-chips {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin-bottom: 24px;
}
.risk-chip {
font-size: 0.8rem;
padding: 6px 10px;
border-radius: 16px;
background-color: var(–raf-color-bg-secondary);
border: 1px solid var(–raf-color-border);
cursor: help;
position: relative;
transition: background-color 0.2s;
}
/* Apply distinct border colors to chips based on type */
.risk-chip[data-type=”chip-danger”] { border-color: var(–raf-color-danger); }
.risk-chip[data-type=”chip-warning”] { border-color: var(–raf-color-warning); }

.risk-chip:hover {
background-color: #333333; /* Slightly lighter dark on hover */
}

/* — Cash Flow Snapshot — */
.cashflow-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
gap: 12px;
margin-bottom: 24px;
}
.cashflow-item {
padding: 12px;
border-left: 3px solid var(–raf-color-border);
}
/* Use vibrant colors for left indicators */
.cashflow-item[data-type=”cash-in”] {
border-left-color: var(–raf-color-accent); /* Vibrant Green for income */
}
.cashflow-item[data-type=”cash-out”] {
border-left-color: var(–raf-color-warning); /* Warning/Amber for high expenditure/payouts */
}
.cashflow-label {
font-size: 0.75rem;
color: var(–raf-color-subtle);
margin-bottom: 4px;
}
.cashflow-value {
font-size: 1rem;
font-weight: 600;
}

/* — Footer — */
.footer-note {
border-top: 1px solid var(–raf-color-border);
padding-top: 12px;
font-size: 0.7rem;
color: var(–raf-color-subtle);
text-align: right;
}

/* — Tooltip (Internal) – Fixed dark theme for contrast — */
.tooltip {
position: absolute;
z-index: 10;
background-color: #4b5563; /* Fixed dark grey for tooltip */
color: #f9fafb; /* Fixed light text for tooltip */
padding: 8px 12px;
border-radius: 4px;
font-size: 0.75rem;
max-width: 200px;
text-align: left;
pointer-events: none;
opacity: 0;
transition: opacity 0.2s, transform 0.2s;
top: 100%;
left: 50%;
transform: translateX(-50%) translateY(5px);
box-shadow: 0 2px 5px rgba(0,0,0,0.5);
}
.tooltip::before {
content: ”;
position: absolute;
bottom: 100%;
left: 50%;
transform: translateX(-50%);
border-width: 5px;
border-style: solid;
border-color: transparent transparent #4b5563 transparent;
}
.tooltip.visible {
opacity: 1;
transform: translateX(-50%) translateY(0);
}
/* Adjust tooltip position for chip elements */
.risk-chip .tooltip {
top: calc(100% + 5px);
}
`;

// — HTML Structure —
const html = `

${data.title}

${data.subtitle}

${data.metrics.map(m => `

${m.label}
${m.value}

`).join(”)}

${data.deficit.startYear} Deficit
${data.deficit.startValue}

${data.deficit.endYear} Deficit
${data.deficit.endValue}

${data.deficit.label}

Risks & Pressures

${data.risks.map(r => `

${r.text}

`).join(”)}

Cash Flow Snapshot

${data.cashflow.map(c => `

${c.label}
${c.value}

`).join(”)}

${data.footer}

`;

// Combine style and html
return `${style}${html}`;
}

connectedCallback() {
this.shadowRoot.innerHTML = this.getTemplate();
this.addInteractivity();
}

// — Tooltip Interactivity Logic —

// Generic handler for showing the tooltip
showTooltip(element) {
const tooltip = element.querySelector(‘.tooltip’);
if (tooltip) {
// Wait a small delay to prevent flickering on quick mouse movements
element.tooltipTimeout = setTimeout(() => {
tooltip.classList.add(‘visible’);
}, 200);
}
}

// Generic handler for hiding the tooltip
hideTooltip(element) {
const tooltip = element.querySelector(‘.tooltip’);
if (element.tooltipTimeout) {
clearTimeout(element.tooltipTimeout);
element.tooltipTimeout = null;
}
if (tooltip) {
tooltip.classList.remove(‘visible’);
}
}

addInteractivity() {
const interactiveElements = this.shadowRoot.querySelectorAll(‘.kpi-item, .risk-chip’);

interactiveElements.forEach(element => {
// Desktop/Mouse events
element.addEventListener(‘mouseover’, () => this.showTooltip(element));
element.addEventListener(‘mouseout’, () => this.hideTooltip(element));

// Mobile/Touch events (toggle visibility on tap)
let touchTimeout;
element.addEventListener(‘touchstart’, (e) => {
// Prevent mouse events from firing after touch
e.preventDefault();
const tooltip = element.querySelector(‘.tooltip’);

// If the tooltip is already visible, hide it. Otherwise, show it.
if (tooltip.classList.contains(‘visible’)) {
this.hideTooltip(element);
} else {
// Hide any other visible tooltips first
this.shadowRoot.querySelectorAll(‘.tooltip.visible’).forEach(t => t.classList.remove(‘visible’));
this.showTooltip(element);

// Set a timeout to auto-hide the tooltip after a few seconds on mobile
if (touchTimeout) clearTimeout(touchTimeout);
touchTimeout = setTimeout(() => this.hideTooltip(element), 3000); // Hide after 3 seconds
}
});

// Clean up the timeout on touchend if necessary, though touchstart handles the hide logic
element.addEventListener(‘touchend’, (e) => {
e.preventDefault();
});
});

// Hide tooltips if the user taps anywhere else on the component
this.shadowRoot.addEventListener(‘click’, (e) => {
if (!e.target.closest(‘.kpi-item, .risk-chip’)) {
this.shadowRoot.querySelectorAll(‘.tooltip.visible’).forEach(t => t.classList.remove(‘visible’));
}
});
}
}

// Register the custom element
if (!customElements.get(‘raf-infographic’)) {
customElements.define(‘raf-infographic’, RAFInfographic);
}

“Even when wrongdoing is exposed through forensic probes, disciplinary and criminal actions are often delayed or dropped,” he said.

Systemic weaknesses

Mashau said the RAF is beset by illegal payments, botched settlements, and default judgments totalling billions. He proposed an automated claims system to reduce fraud and accelerate payouts.

“Transparent algorithms could minimise waste—possibly even freeing funds to reward good management. Instead, executives get bonuses while victims wait years.”

Persistent audit failures

At a recent meeting of Parliament’s Standing Committee on Public Accounts (Scopa), the Auditor-General’s office reported five consecutive disclaimers and adverse audit opinions.

Senior manager for the RAF at the Auditor-General’s office, Siphesihle Mlangeni, said the fund’s use of the IPSAS 42 framework—unapproved for South African public entities—had caused “pervasive material misstatements”.

The RAF’s accumulated deficit has grown from R13.6 billion in 2020/21 to R27.8 billion by 2024/25.

Mlangeni also flagged procurement failures, vacant executive positions, and soaring default judgments—from R1.6 billion to nearly R4 billion in a year. Two recent irregularities alone—unauthorised banking detail changes and overpaid claims—have cost more than R42 million.

The RAF is currently challenging these findings at the Constitutional Court.

Reform or replacement?

Wayne Duvenage, CEO of the Organisation Undoing Tax Abuse (OUTA), argued that the RAF’s model could still succeed if properly managed.

“The fund can meet its mandate with good systems and leadership. The problem is mismanagement and cadre deployment,” he said.

Duvenage added that reforming the RAF would likely be cheaper than starting from scratch. “We collect nearly R50 billion a year through the levy—that should be enough.”

He also stressed the need for a comprehensive road safety campaign.

Professor Jannie Rossouw from Wits Business School warned that designing a replacement system would be complex. “South Africa previously used a third-party insurance model. Replacing the RAF would raise difficult questions.”

Lessons from abroad

Kenya operates a fault-based system, requiring third-party insurance. Victims claim from the at-fault driver’s insurer—a slow and often unsuccessful process.

In Australia, several states use no-fault or hybrid systems. For example, the Australian Capital Territory’s scheme provides benefits to all injured parties for up to five years. Western Australia runs a no-fault fund for catastrophic injuries.

The human cost

The Law Society of South Africa (LSSA) said the RAF’s delays in compensation and rehabilitation worsen victims’ suffering.

“The gap between injury and compensation is too long,” said Jacqui Sohn, of the LSSA’s Personal Injury Committee.

She warned that alternatives such as the Road Accident Benefit Scheme (RABS) could exclude vulnerable claimants.

“Unless premiums are collected through a fuel levy, insurance-based systems will be unaffordable. A RABS-style model risks leaving victims reliant on overburdened public hospitals, without compensation for pain and suffering.”

Sohn said a properly funded RAF model could still work—if linked to other agencies for faster registration, investigation, and interim payments.

A cultural problem

Mashau blamed “state waste” on a broader culture of impunity.

“People are used to ignoring the PFMA. Every year, we see hundreds of millions wasted—with no consequences.”

He criticised the RAF’s spending on PR and executive perks. “Glossy billboards won’t hide a broken system.”

Mashau called for a leadership overhaul: “Boards should include finance and legal experts—not political loyalists.”

“Reform requires brave, ethical leaders committed to doing the right thing. Our financial problems stem not from a lack of funds—but from funds being stolen or misused.”

Earlier this month, the RAF announced a record R694 million payout in one day and said it had disbursed R17.3 billion since April, including R4.18 billion in September alone, as part of a turnaround strategy.

Sohn said the state must ensure any new or revamped system is well run. “Properly managed, the RAF can still deliver dignity and fairness to road crash victims.”

simon.majadibodu@iol.co.za

IOL News



Source link

Leave comment

Your email address will not be published. Required fields are marked with *.