Parliament in South Africa has voted not to impeach President Jacob Zuma, despite a court ruling against him.
The governing African National Congress (ANC) defeated the opposition-sponsored motion, saying Mr Zuma was not guilty of "serious misconduct".
Last week, South Africa's highest court said he had breached the constitution by failing to repay public money used to upgrade his private home.
The opposition said Mr Zuma was a "crooked" president, not fit to govern.
After a rowdy debate, with MPs heckling and shouting at each other, a vote was called in the lower house, the National Assembly.
The motion was backed by 143 MPs and opposed by 233.
Mr Zuma was not present.
The ANC had denounced the impeachment proceedings as a publicity stunt.
The Democratic Alliance (DA) needed a two-thirds majority - 267 MPs out of 400 - to impeach Mr Zuma.
The party has 89 seats, and the combined opposition 151.
How the seats are divided in parliament:
- ANC: 249
- DA: 89
- EFF: 25
- Others: 37
- Opposition total: 151
- Needed for impeachment: 267
DA leader Mmusi Maimane said public anger towards Mr Zuma was palpable, but he did not expect the ANC to back the impeachment motion because corruption had affected the entire party "like a cancer".
"The ANC has lost its way and there's no way back," he added.
Deputy Justice Minister John Jeffery rejected the call to impeach Mr Zuma, saying the president was not guilty of "serious misconduct".
Earlier, opposition MPs called for speaker Baleka Mbete to step down, after accusing her of taking sides.
Ms Mbete rejected their demand, after an adjournment to consult parliamentary officials, but then left her deputy to chair most of the debate.
Mr Zuma has been dogged by allegations of corruption since before he was elected president in 2009.
He was accused of taking bribes over an arms deal but he denied the allegation and the charges were controversially dropped just before he took office.
He later found himself at the centre of controversy over the use of $23m (£15m) of public money to upgrade his private home in the rural area of Nkandla in KwaZulu-Natal province.
Pool and amphitheatre
In 2014, South Africa's anti-corruption watchdog Thuli Madonsela ordered him to repay the portion of the money not related to security upgrades.
Mr Zuma had "unduly benefited" from the building of a swimming pool, amphitheatre, cattle enclosure and chicken run, Ms Madonsela said.
The DA and the Economic Freedom Fighters (EFF) went to the Constitutional Court to challenge Mr Zuma's refusal to pay the money.
The court ruled against Mr Zuma and also condemned parliament for failing to hold Mr Zuma accountable, and rejecting the public protector's findings.
In a televised address to the nation on Friday, Mr Zuma apologised for the "frustration" caused by the long-running controversy and said he would abide by the ruling.
He had acted "in good faith" and "never knowingly and deliberately set out to violate the constitution", he added.
What Mr Zuma must pay for
- Swimming pool
- Visitor centre
- Cattle enclosure
- Chicken run