--- views_random_seed_handler_sort_random.inc	2014-05-09 20:58:05.000000000 +0300
+++ views_random_seed_handler_sort_random.inc	2014-05-11 22:39:13.000000000 +0300
@@ -110,10 +110,18 @@
  * @return int $seed Seed value which is a timestamp.
  */
 function views_random_seed_calculate_seed($options, $view_name, $display, $db_type) {
+  global $user;
+
   $time = REQUEST_TIME;
   $seed_name = 'views_seed_name-' . $view_name . '-' . $display;
   $seed_time = 'views_seed_time-' . $view_name . '-' . $display;
-  $seed = isset($_SESSION[$seed_name]) ? $_SESSION[$seed_name] : FALSE;
+  //$seed = isset($_SESSION[$seed_name]) ? $_SESSION[$seed_name] : FALSE;  
+  if ($user->uid && $options['user_seed_type'] == 'diff_per_user') {
+    $seed = isset($_SESSION[$seed_name]) ? $_SESSION[$seed_name] : FALSE;
+  }
+  else {
+    $seed = variable_get($seed_name, FALSE);
+  }
 
   if ($options['user_seed_type'] == 'custom') {
     $seed = eval($options['custom_seed']);
@@ -128,8 +136,13 @@
   // Reset seed or not ?
   if ($options['reset_seed_int'] != 'never') {
     $reset_time = $options['reset_seed_int'] == 'custom' ? $options['reset_seed_custom'] : $options['reset_seed_int'];
-    if (($_SESSION[$seed_time] + $reset_time) < $time) {
+    if ($user->uid && ($_SESSION[$seed_time] + $reset_time) < $time) {
+      variable_del($seed_name);
+      $seed = _views_random_seed_generate_seed($options['user_seed_type'], $seed_name, $seed_time, $time, $db_type);
+    }
+    elseif ((variable_get($seed_time, $time) + $reset_time) < $time) {
       variable_del($seed_name);
+      variable_del($seed_time);
       $seed = _views_random_seed_generate_seed($options['user_seed_type'], $seed_name, $seed_time, $time, $db_type);
     }
   }
@@ -150,10 +163,13 @@
  * @return int seed value.
  */
 function _views_random_seed_generate_seed($user_seed_type, $seed_name, $seed_time, $time, $db_type) {
+  global $user;
 
   // Different per user, simply return $time.
-  if ($user_seed_type == 'diff_per_user') {
+  if ($user->uid && $user_seed_type == 'diff_per_user') {
     $seed = _views_random_seed_create_int($time, $db_type);
+    $_SESSION[$seed_time] = $time;
+    $_SESSION[$seed_name] = $seed;
   }
   else {
     // Same for al users, get a stored variable.
@@ -161,11 +177,10 @@
     if ($seed == FALSE) {
       $seed = _views_random_seed_create_int($time, $db_type);
       variable_set($seed_name, $seed);
+      variable_set($seed_time, $seed);
     }
   }
 
-  $_SESSION[$seed_time] = $time;
-  $_SESSION[$seed_name] = $seed;
   return $seed;
 }
 
