A fluid dispenser comprising: a reservoir holding the fluid; a piston arranged to drive the fluid; an aperture from which the driven fluid is dispensed; a motor with a coupling to the piston, wherein the motor drives the piston both forward and backward; wherein the distance the piston is driven forward determines the amount of fluid dispensed and thus the amount of fluid remaining in the reservoir, and the distance the piston is driven backward determines a backoff distance, wherein the backoff distance is selected to inhibit the fluid from leaking while holding the fluid at a repeatable location at or near the aperture; characterized in that it further comprises a computer processor, and memory that holds a series of tables that relate the backoff distance to both the volume to be dispensed and the amount of fluid remaining to be dispensed, wherein there are separate tables for each fluid to be dispensed; wherein when a computer program is executed by the processor, the processor accesses the table for the fluid being dispensed, and based on the given volume to be dispensed and the amount of fluid remaining to be dispensed the processor retrieves the corresponding backoff distance; and wherein the computer processor then drives the motor forward to dispense the given volume of fluid and then drives the motor backward the retrieved backoff distance. a reservoir holding the fluid; a piston arranged to drive the fluid; an aperture from which the driven fluid is dispensed; a motor with a coupling to the piston, wherein the motor drives the piston both forward and backward; wherein the distance the piston is driven forward determines the amount of fluid dispensed and thus the amount of fluid remaining in the reservoir, and the distance the piston is driven backward determines a backoff distance, wherein the backoff distance is selected to inhibit the fluid from leaking while holding the fluid at a repeatable location at or near the aperture; characterized in that it further comprises a computer processor, and memory that holds a series of tables that relate the backoff distance to both the volume to be dispensed and the amount of fluid remaining to be dispensed, wherein there are separate tables for each fluid to be dispensed; wherein when a computer program is executed by the processor, the processor accesses the table for the fluid being dispensed, and based on the given volume to be dispensed and the amount of fluid remaining to be dispensed the processor retrieves the corresponding backoff distance; and wherein the computer processor then drives the motor forward to dispense the given volume of fluid and then drives the motor backward the retrieved backoff distance. a computer processor, and memory that holds a series of tables that relate the backoff distance to both the volume to be dispensed and the amount of fluid remaining to be dispensed, wherein there are separate tables for each fluid to be dispensed; wherein when a computer program is executed by the processor, the processor accesses the table for the fluid being dispensed, and based on the given volume to be dispensed and the amount of fluid remaining to be dispensed the processor retrieves the corresponding backoff distance; and wherein the computer processor then drives the motor forward to dispense the given volume of fluid and then drives the motor backward the retrieved backoff distance.