--- acidfree.module.orig	2008-02-11 20:27:04.000000000 -0600
+++ acidfree.module	2008-02-11 20:31:24.000000000 -0600
@@ -2084,10 +2084,14 @@
 function _acidfree_get_offset_in_parent($parent, &$node) {
     $pnode = _album_from_tid($parent);
     $order = _acidfree_content_sort_array($pnode);
-    $query = 'SELECT COUNT(n.nid) FROM {node} n INNER JOIN {term_node} tn ON n.nid = tn.nid WHERE n.type <> \'acidfree\' AND tn.tid = %d AND (n.moderate = 0 AND n.status = 1) AND ' . _acidfree_filter_clause($order, 'n') . " < '" . _acidfree_filter_clause($order, $node) . "'";
+    /* kjh: added the n.nid check to prevent the current node from being
+       included. Works around a bug when sorting on title and title has embedded
+       single quote
+       */
+    $query = 'SELECT COUNT(n.nid) FROM {node} n INNER JOIN {term_node} tn ON n.nid = tn.nid WHERE n.type <> \'acidfree\' AND tn.tid = %d AND (n.moderate = 0 AND n.status = 1) AND ' . _acidfree_filter_clause($order, 'n') . " < '" . _acidfree_filter_clause($order, $node) . "' and n.nid <> %d";
 
     $query = db_rewrite_sql($query);
-    $res = db_query($query, $parent);
+    $res = db_query($query, $parent, $node->nid);
     if (db_num_rows($res) == 0)
         return 0;
 
@@ -2504,7 +2508,9 @@
               if ($object) {
                 $filter[] = str_pad($node_data->nid, 10, '0', STR_PAD_LEFT);
               } else {
-                $filter[] = "LPAD(n.nid, 10, '0')";
+                // kjh: added the cast to make titles compare in case sensitive
+                //      manner
+                $filter[] = "cast(LPAD(n.nid, 10, '0') as char)";
               }
             }
             break;
