--- GridText.c.orig	Wed Dec 16 04:20:00 2015
+++ GridText.c	Sun May  1 23:58:44 2016
@@ -3413,3 +3413,4 @@ static void split_line(HText *text, unsi
 	    int *newpos = oldpos + ht_num_runs - 1;
-	    int i = 1;
+	    int i = 0;
+	    int phase = (ht_num_runs - 1) / 2;
 
@@ -3423,8 +3424,16 @@ static void split_line(HText *text, unsi
 	    oldpos[0] = justify_start_position + ht_runs[0].cell_len + 1;
-	    newpos[0] = oldpos[0] + (d_ + (r_-- > 0));
+	    newpos[0] = oldpos[0] + d_;
 	    while (i < ht_num_runs - 1) {
-		int delta = ht_runs[i].cell_len + 1;
+		/* Handle subsequent runs */
+		if (i >= 1) {
+		    int delta = ht_runs[i].cell_len + 1;
 
-		oldpos[i] = oldpos[i - 1] + delta;
-		newpos[i] = newpos[i - 1] + delta + (d_ + (r_-- > 0));
+		    oldpos[i] = oldpos[i - 1] + delta;
+		    newpos[i] = newpos[i - 1] + delta + d_;
+		}
+		/* Plant the remaining spaces (r_) at even intervals */
+		if ((phase += r_) >= ht_num_runs - 1) {
+		    phase -= ht_num_runs - 1;
+		    newpos[i]++;
+		}
 		i++;
