A magnetic flowmeter for measuring a flow rate of a fluid flow, comprising: a flow tube assembly configured to receive the fluid flow and including: a coil configured to produce a magnetic field across the fluid flow in response to a coil current, the magnetic field induces an electromotive force, EMF, in the fluid flow that is proportional to the flow rate; and an EMF sensor arranged to sense the EMF and generate an output indicating the induced EMF; and a programmable bi-directional current generator comprising: a memory configured to store multiple different profile commands, wherein each profile command defines a current profile of a voltage over time, wherein a current profile corresponds to a voltage over time that corresponds to the coil current; a profile generator configured to issue at least one of the profile commands; a power amplifier; and a controller to control the power amplifier to generate coil current pulses forming the coil current that travel through the coil in alternating directions, each coil current pulse having a current profile of voltage over time that is based on a corresponding profile command, wherein the coil current formed by the generated coil current pulses causes the magnetic field generated by the coil for measuring the flow rate, characterized in that the profile commands are tailored to the inductance of the coils and the maximum voltage of the power amplifier to reduce the likelihood of a current overshoot of the pulse current that exceeds the maximum voltage of the power amplifier. a flow tube assembly configured to receive the fluid flow and including: a coil configured to produce a magnetic field across the fluid flow in response to a coil current, the magnetic field induces an electromotive force, EMF, in the fluid flow that is proportional to the flow rate; and an EMF sensor arranged to sense the EMF and generate an output indicating the induced EMF; and a coil configured to produce a magnetic field across the fluid flow in response to a coil current, the magnetic field induces an electromotive force, EMF, in the fluid flow that is proportional to the flow rate; and an EMF sensor arranged to sense the EMF and generate an output indicating the induced EMF; and a programmable bi-directional current generator comprising: a memory configured to store multiple different profile commands, wherein each profile command defines a current profile of a voltage over time, wherein a current profile corresponds to a voltage over time that corresponds to the coil current; a profile generator configured to issue at least one of the profile commands; a power amplifier; and a controller to control the power amplifier to generate coil current pulses forming the coil current that travel through the coil in alternating directions, each coil current pulse having a current profile of voltage over time that is based on a corresponding profile command, wherein the coil current formed by the generated coil current pulses causes the magnetic field generated by the coil for measuring the flow rate, characterized in that the profile commands are tailored to the inductance of the coils and the maximum voltage of the power amplifier to reduce the likelihood of a current overshoot of the pulse current that exceeds the maximum voltage of the power amplifier. a memory configured to store multiple different profile commands, wherein each profile command defines a current profile of a voltage over time, wherein a current profile corresponds to a voltage over time that corresponds to the coil current; a profile generator configured to issue at least one of the profile commands; a power amplifier; and a controller to control the power amplifier to generate coil current pulses forming the coil current that travel through the coil in alternating directions, each coil current pulse having a current profile of voltage over time that is based on a corresponding profile command, wherein the coil current formed by the generated coil current pulses causes the magnetic field generated by the coil for measuring the flow rate, characterized in that a profile generator configured to issue at least one of the profile commands; a power amplifier; and a controller to control the power amplifier to generate coil current pulses forming the coil current that travel through the coil in alternating directions, each coil current pulse having a current profile of voltage over time that is based on a corresponding profile command, wherein the coil current formed by the generated coil current pulses causes the magnetic field generated by the coil for measuring the flow rate, characterized in that the profile commands are tailored to the inductance of the coils and the maximum voltage of the power amplifier to reduce the likelihood of a current overshoot of the pulse current that exceeds the maximum voltage of the power amplifier.