Help to store the correct ifHighSpeed coming from a buggy snmp agent

I have some devices which snmp agent have the following issue: they have a wrong ifHighSpeed expressed in bit/s instead of Mbit/s (as it should by definition), with the result that ifHighSpeed = ifSpeed

IF-MIB::ifHighSpeed.1 = Gauge32: 100000000
IF-MIB::ifHighSpeed.3 = Gauge32: 100000000

IF-MIB::ifSpeed.1 = Gauge32: 100000000
IF-MIB::ifSpeed.3 = Gauge32: 100000000

Unfortunately not all devices of the same type have this issue, so I can’t detect the issue basing on the sysObjectID.

What can I do to store the correct ifHighSpeed and properly report the “In/Out Traffic Utilization (High Speed)”? Is there a way to run a script that stores ifHighSpeed/1000000 in case ifHighSpeed = ifSpeed?

Or would you recommend to work around this issue in Graphana (but I still don’t know how to do it)?

OpenNMS version:

There are two ways.
First way, fix the agent.
Second way, fix opennms to check for such buggy agent