diff --git a/memcache-session.inc b/memcache-session.inc
index f46f7ca..c7559ba 100644
--- a/memcache-session.inc
+++ b/memcache-session.inc
@@ -122,11 +122,11 @@ function sess_write($key, $value) {
     $last_read = isset($GLOBALS['memcache_session_last_read']) ? $GLOBALS['memcache_session_last_read'] : FALSE;
     $is_changed = empty($last_read) || $last_read['sid'] != $key || $last_read['value'] != $value;
 
-    if ($is_changed || time() - $user->timestamp > variable_get('session_write_interval', 360)) {
+    if ($is_changed || empty($user->timestamp) || time() - $user->timestamp > variable_get('session_write_interval', 360)) {
       dmemcache_set($key, $session, ini_get('session.gc_maxlifetime'), 'session');
       $session_write = TRUE;
     }
-    if ($user->uid && time() - $user->access > variable_get('session_write_interval', 360)) {
+    if ($user->uid && (empty($user->access) || time() - $user->access > variable_get('session_write_interval', 360))) {
       // Update user->access if the session_write_interval threshold has
       // passed.
       db_query('UPDATE {users} SET access = %d WHERE uid = %d', $session->timestamp, $user->uid);
