diff --git a/include/event-scheduler.h b/include/event-scheduler.h
index 4eb6d6c..5f2c7b2 100644
--- a/include/event-scheduler.h
+++ b/include/event-scheduler.h
@@ -246,8 +246,8 @@
   boost::uniform_real<> m_dist;
   boost::variate_generator<RNG_TYPE &, boost::uniform_real<> > m_random;
   Direction m_direction;
-  double m_interval;
   double m_percent;
+  double m_interval;
 
 };
 #endif // EVENT_SCHEDULER_H
diff --git a/src/db-helper.cc b/src/db-helper.cc
index 0e08612..01462c6 100644
--- a/src/db-helper.cc
+++ b/src/db-helper.cc
@@ -239,6 +239,8 @@
   const void *name    = sqlite3_value_blob  (argv[0]);
   sqlite3_int64 seqno = sqlite3_value_int64 (argv[1]);
 
+  std::cout << context << ": nameBytes " << nameBytes << " seqno " << seqno << std::endl;
+  
   EVP_DigestUpdate (*hash_context, name, nameBytes);
   EVP_DigestUpdate (*hash_context, &seqno, sizeof(sqlite3_int64));
 }
diff --git a/src/sync-log.cc b/src/sync-log.cc
index d5a8750..9911416 100644
--- a/src/sync-log.cc
+++ b/src/sync-log.cc
@@ -100,12 +100,12 @@
   int res = sqlite3_exec (m_db, "BEGIN TRANSACTION;", 0,0,0);
 
   res += sqlite3_exec (m_db, "\
-INSERT INTO SyncLog                                     \
-    (state_hash, last_update)                           \
-    SELECT                                              \
-       hash(device_name, seq_no), datetime('now')       \
-    FROM SyncNodes                                      \
-    ORDER BY device_name;                               \
+INSERT INTO SyncLog                                                \
+    (state_hash, last_update)                                      \
+    SELECT                                                         \
+       hash(device_name, seq_no), datetime('now')                  \
+    FROM (SELECT * FROM SyncNodes                                  \
+              ORDER BY device_name);                               \
 ", 0,0,0);
 
   if (res != SQLITE_OK)
@@ -263,6 +263,11 @@
   return locator;
 }
 
+// void xTrace (void*, const char* q)
+// {
+//   cout << q << endl;
+// }
+
 void
 SyncLog::UpdateLocator(const Name &deviceName, const Name &locator)
 {
@@ -270,8 +275,8 @@
   sqlite3_prepare_v2 (m_db, "UPDATE SyncNodes SET last_known_locator=? WHERE device_name=?;", -1, &stmt, 0);
   Ccnx::CcnxCharbufPtr nameBuf = deviceName;
   Ccnx::CcnxCharbufPtr locatorBuf = locator;
-  sqlite3_bind_blob (stmt, 1, nameBuf->buf(), nameBuf->length(), SQLITE_STATIC);
-  sqlite3_bind_blob (stmt, 2, locatorBuf->buf(), locatorBuf->length(), SQLITE_STATIC);
+  sqlite3_bind_blob (stmt, 1, locatorBuf->buf(), locatorBuf->length(), SQLITE_STATIC);
+  sqlite3_bind_blob (stmt, 2, nameBuf->buf(), nameBuf->length(),       SQLITE_STATIC);
   int res = sqlite3_step (stmt);
 
   if (res != SQLITE_OK && res != SQLITE_DONE)
@@ -288,11 +293,6 @@
   return FindStateDifferences (*Hash::FromString (oldHash), *Hash::FromString (newHash));
 }
 
-// void xTrace (void*, const char* q)
-// {
-//   cout << q << endl;
-// }
-
 SyncStateMsgPtr
 SyncLog::FindStateDifferences (const Hash &oldHash, const Hash &newHash)
 {
@@ -362,14 +362,16 @@
         state->set_locator (reinterpret_cast<const char*> (sqlite3_column_blob (stmt, 1)), sqlite3_column_bytes (stmt, 1));
       }
 
-      sqlite3_int64 newSeqNo = sqlite3_column_int64 (stmt, 3);
-      if (newSeqNo >= 0)
+      if (sqlite3_column_type (stmt, 3) == SQLITE_NULL)
         {
+        state->set_type (SyncState::DELETE);
+        }
+      else
+        {
+          sqlite3_int64 newSeqNo = sqlite3_column_int64 (stmt, 3);
           state->set_type (SyncState::UPDATE);
           state->set_seq (newSeqNo);
         }
-      else
-        state->set_type (SyncState::DELETE);
 
       // std::cout << sqlite3_column_text (stmt, 0) <<
       //   ": from "  << sqlite3_column_int64 (stmt, 1) <<
