--- loncom/lonnet/perl/lonnet.pm	2001/01/11 11:11:27	1.97
+++ loncom/lonnet/perl/lonnet.pm	2001/01/30 01:31:05	1.101
@@ -85,7 +85,7 @@
 # 05/01/01 Guy Albertelli
 # 05/01,06/01,09/01 Gerd Kortemeyer
 # 09/01 Guy Albertelli
-# 09/01,10/01,11/01 Gerd Kortemeyer
+# 09/01,10/01,11/01,29/01 Gerd Kortemeyer
 
 package Apache::lonnet;
 
@@ -1527,7 +1527,7 @@ sub condval {
 # --------------------------------------------------------- Value of a Variable
 
 sub EXT {
-    my $varname=shift;
+    my ($varname,$psymb)=@_;
     unless ($varname) { return ''; }
     my ($realm,$space,$qualifier,@therest)=split(/\./,$varname);
     my $rest;
@@ -1593,7 +1593,12 @@ sub EXT {
     } elsif ($realm eq 'resource') {
       if ($ENV{'request.course.id'}) {
 # ----------------------------------------------------- Cascading lookup scheme
-       my $symbp=&symbread();
+       my $symbp;
+       if ($psymb) {
+          $symbp=$psymb;
+       } else {
+          $symbp=&symbread();
+       }
        my $mapp=(split(/\_\_\_/,$symbp))[0];
 
        my $symbparm=$symbp.'.'.$spacequalifierrest;
@@ -1843,16 +1848,20 @@ sub numval {
 sub rndseed {
     my $symb;
     unless ($symb=&symbread()) { return time; }
-    my $symbchck=unpack("%32C*",$symb);
-    my $symbseed=numval($symb)%$symbchck;
-    my $namechck=unpack("%32C*",$ENV{'user.name'});
-    my $nameseed=numval($ENV{'user.name'})%$namechck;
-    return int( $symbseed
-	       .$nameseed
-               .unpack("%32C*",$ENV{'user.domain'})
-               .unpack("%32C*",$ENV{'request.course.id'})
-               .$namechck
-               .$symbchck);
+    { 
+      use integer;
+      my $symbchck=unpack("%32C*",$symb) << 27;
+      my $symbseed=numval($symb) << 22;
+      my $namechck=unpack("%32C*",$ENV{'user.name'}) << 17;
+      my $nameseed=numval($ENV{'user.name'}) << 12;
+      my $domainseed=unpack("%32C*",$ENV{'user.domain'}) << 7;
+      my $courseseed=unpack("%32C*",$ENV{'request.course.id'});
+      my $num=$symbseed+$nameseed+$domainseed+$courseseed+$namechck+$symbchck;
+      #uncommenting these lines can break things!
+      #&Apache::lonxml::debug("$symbseed:$nameseed;$domainseed|$courseseed;$namechck:$symbchck");
+      #&Apache::lonxml::debug("rndseed :$num:$symb");
+      return $num;
+    }
 }
 
 sub ireceipt {