The gap between Peru's presidential candidates has narrowed to less than 20,000 votes with 96% of ballots counted after Sunday's runoff.