--- a/src/lib/compiler/NodeFactory.cc
+++ b/src/lib/compiler/NodeFactory.cc
@@ -23,7 +23,8 @@
     return false;
 }
 
-/* Comparison function for STL vectors of equal length */
+/* Comparison function for STL vectors */
+/*
 bool lt(vector<double> const &value1, vector<double> const &value2)
 {
     for (unsigned long i = 0; i < value1.size(); ++i) {
@@ -36,10 +37,9 @@
     }
     return false;
 }
+*/
 
-//FIXME: Need node indexing
 /* Comparison function for Nodes */
-/*
 bool lt(Node const *node1, Node const *node2)
 {
     if (node1 == node2) {
@@ -50,29 +50,25 @@
     bool fix1 = node1->isFixed();
     bool fix2 = node2->isFixed();
 
-    if (fix1 && !fix2) {
-	//Fixed nodes come before non-fixed nodes
-	return true;
-    }
-    else if (!fix1 && fix2) {
-	return false;
-    }
-    else if (fix1 && fix2) {
+    if (fix1 && fix2) {
 	//Fixed nodes are sorted by dimension, then value
 	if (node1->dim() == node2->dim()) {
 	    return lt(node1->value(0), node2->value(0), node1->length());
 	}
 	else {
-	    return (node1->dim() < node2->dim());
+	    return node1->dim() < node2->dim();
 	}
     }
-    else {
+    else if (!fix1 && !fix2) {
 	//Non-fixed nodes are sorted by address. The ordering is
 	//arbitrary, but unique.
 	return (node1 < node2);
     }
+    else {
+	//Fixed nodes come before non-fixed nodes
+	return fix1 > fix2;
+    }
 }
-*/
 
 /* Comparison operator for vectors of parameters */
 bool lt(vector<Node const *> const &par1, vector<Node const *> const &par2)