diff --git a/src/partition.c b/src/partition.c
index 5e2c313f48ce3386ef5a5b0417f593ceeb59145a..d481f9315a3a8b3f3ccb53cf1f5722b3b698c30a 100644
--- a/src/partition.c
+++ b/src/partition.c
@@ -706,7 +706,10 @@ static void repart_edge_metis(int partweights, int bothweights, int timebins,
 
       /* Make range the same in both weights systems. */
       if ((wmaxv - wminv) > (wmaxe - wmine)) {
-        double wscale = (wmaxv - wminv) / (wmaxe - wmine);
+        double wscale = 1.0;
+        if ((wmaxe - wmine) > 0.0) {
+          wscale = (wmaxv - wminv) / (wmaxe - wmine);
+        }
         for (int k = 0; k < 26 * nr_cells; k++) {
           weights_e[k] = (weights_e[k] - wmine) * wscale + wminv;
         }
@@ -714,7 +717,10 @@ static void repart_edge_metis(int partweights, int bothweights, int timebins,
         wmaxe = wmaxv;
 
       } else {
-        double wscale = (wmaxe - wmine) / (wmaxv - wminv);
+        double wscale = 1.0;
+        if ((wmaxv - wminv) > 0.0) {
+          wscale = (wmaxe - wmine) / (wmaxv - wminv);
+        }
         for (int k = 0; k < nr_cells; k++) {
           weights_v[k] = (weights_v[k] - wminv) * wscale + wmine;
         }
@@ -723,14 +729,20 @@ static void repart_edge_metis(int partweights, int bothweights, int timebins,
       }
 
       /* Scale to the METIS range. */
-      double wscale = (metis_maxweight - 1.0) / (wmaxv - wminv);
+      double wscale = 1.0;
+      if ((wmaxv - wminv) > 0.0) {
+         wscale = (metis_maxweight - 1.0) / (wmaxv - wminv);
+      }
       for (int k = 0; k < nr_cells; k++) {
         weights_v[k] = (weights_v[k] - wminv) * wscale + 1.0;
       }
     }
 
     /* Scale to the METIS range. */
-    double wscale = (metis_maxweight - 1.0) / (wmaxe - wmine);
+    double wscale = 1.0;
+    if ((wmaxe - wmine) > 0.0) {
+      wscale = (metis_maxweight - 1.0) / (wmaxe - wmine);
+    }
     for (int k = 0; k < 26 * nr_cells; k++) {
       weights_e[k] = (weights_e[k] - wmine) * wscale + 1.0;
     }