diff --git a/src/main/scala/leon/synthesis/ChooseInfo.scala b/src/main/scala/leon/synthesis/ChooseInfo.scala
index a9e49f10d136be5d3bc1369ff783e08f2d1d2ec1..f0dd2d242c212ce3aeb58b3d59645413dc9d8da8 100644
--- a/src/main/scala/leon/synthesis/ChooseInfo.scala
+++ b/src/main/scala/leon/synthesis/ChooseInfo.scala
@@ -35,6 +35,6 @@ object ChooseInfo {
       }
     }
 
-    results.sortBy(_.fd.id.toString)
+    results.sortBy(_.source.getPos)
   }
 }
diff --git a/src/main/scala/leon/utils/Positions.scala b/src/main/scala/leon/utils/Positions.scala
index 1068863b54818c7de77ded37814207246b14da80..f5241de64930a454991623c8f4b6330f17ae8530 100644
--- a/src/main/scala/leon/utils/Positions.scala
+++ b/src/main/scala/leon/utils/Positions.scala
@@ -5,13 +5,22 @@ package utils
 
 import java.io.File
 
-abstract class Position {
+abstract class Position extends Ordered[Position] {
   val line: Int
   val col: Int
   val file: File
 
-  def < (that: Position) = {
-    (this.file == that.file) && (this.line < that.line || this.col < that.col)
+  def compare(that: Position) = {
+    if (this.file == that.file) {
+      val ld = this.line - that.line
+      if (ld == 0) {
+        this.col - that.col
+      } else {
+        ld
+      }
+    } else {
+      0
+    }
   }
 
   def fullString: String