diff --git a/includes/base.inc b/includes/base.inc
index 383f59a..8f283ce 100644
--- a/includes/base.inc
+++ b/includes/base.inc
@@ -802,9 +802,8 @@ abstract class MigrationBase {
               $query->where('(CASE WHEN highwater=\'\' THEN 0 ELSE CAST(highwater AS INTEGER) END) < :highwater', array(':highwater' => intval($highwater)));
               break;
             default:
-              // CAST(highwater AS INTEGER) would be ideal, but won't
-              // work in MySQL. This hack is thought to be portable.
-              $query->where('(highwater+0) < :highwater', array(':highwater' => $highwater));
+              // MySQL casts as integers as SIGNED or UNSIGNED.
+              $query->where('(CASE WHEN highwater=\'\' THEN 0 ELSE CAST(highwater AS SIGNED) END) < :highwater', array(':highwater' => intval($highwater)));
           }
         }
         else {
