This laboratory water bath precisely heats liquid samples, features digital temperature control, and is ideal for various laboratory heating applications.<br><br><div style="margin-left: 20px; text-indent: -20px; padding-left: 20px; line-height: 1.4; margin-bottom: 0.1em;"><strong>Brand:</strong> Fisher Scientific</div><div style="margin-left: 20px; text-indent: -20px; padding-left: 20px; line-height: 1.4; margin-bottom: 0.1em;"><strong>Model:</strong> Isotemp GPD-02 2L Water Bath</div><div style="margin-left: 20px; text-indent: -20px; padding-left: 20px; line-height: 1.4; margin-bottom: 0.1em;"><strong>Model Number/MPN:</strong> FSGPD02</div><div style="margin-left: 20px; text-indent: -20px; padding-left: 20px; line-height: 1.4; margin-bottom: 0.1em;"><strong>Capacity:</strong> 2L</div><div style="margin-left: 20px; text-indent: -20px; padding-left: 20px; line-height: 1.4; margin-bottom: 0.1em;"><strong>Voltage:</strong> 100-115V, 200-230V</div><div style="margin-left: 20px; text-indent: -20px; padding-left: 20px; line-height: 1.4; margin-bottom: 0.1em;"><strong>Amperage:</strong> 1.6A, 0.8A</div><div style="margin-left: 20px; text-indent: -20px; padding-left: 20px; line-height: 1.4; margin-bottom: 0.1em;"><strong>Country of Manufacture:</strong> United States</div><div style="margin-left: 20px; text-indent: -20px; padding-left: 20px; line-height: 1.4; margin-bottom: 0.1em;"><strong>Power Supply:</strong> Included</div><div style="margin-left: 20px; text-indent: -20px; padding-left: 20px; line-height: 1.4; margin-bottom: 0.1em;"><strong>Functional Testing:</strong> Tested and fully functional</div><br>The water bath exhibits light handling marks and minor scuffs on its exterior housing. The clear lid is intact and functional. The display screen is clear and readable. Unit was tested for power and basic function, including ability to heat. Unit was not tested in the field of use, and was only tested to reach above 40°C. Thermometer used during testing is not included and was only used for photographic purposes.Please review all photos for more details!<br><br>Hassle Free 30 day guarantee on our entire inventory!<br><br><strong>International Buyers</strong>: Please contact us directly for a shipping quote. Calculations are not always accurate!<br><br><hr><br><em>All photos are of the item(s) you will receive!</em>