diff --git a/src/main/java/org/ids_mannheim/TotalNGrams.java b/src/main/java/org/ids_mannheim/TotalNGrams.java
index afd0670..2057676 100644
--- a/src/main/java/org/ids_mannheim/TotalNGrams.java
+++ b/src/main/java/org/ids_mannheim/TotalNGrams.java
@@ -196,9 +196,17 @@
                         if (cmp1 != 0) {
                             return cmp1;
                         } else {
-                            if (numericSecondarySort)
-                                return new BigInteger(a.getKey()).compareTo(new BigInteger(b.getKey()));
-                            else
+                            if (numericSecondarySort) {
+                                String[] columnsA = a.getKey().split("\t");
+                                String[] columnsB = b.getKey().split("\t");
+                                int len = Math.min(columnsA.length, columnsB.length);
+                                for (int i = 0; i < len; i++) {
+                                    int res = new BigInteger(columnsA[i]).compareTo(new BigInteger(columnsB[i]));
+                                    if (res != 0)
+                                        return (res);
+                                }
+                                return 0;
+                            } else
                                 return a.getKey().compareTo(b.getKey());
                         }
                     })
