Index: userpoints.module
===================================================================
--- userpoints.module	(revision 1941)
+++ userpoints.module	(working copy)
@@ -430,6 +430,7 @@
  * @return number of max points in that user's account
  */
 function userpoints_get_max_points($uid = NULL, $tid = NULL) {
+  static $max = array();
   if (!$uid) { 
     global $user;
     $uid = $user->uid;
@@ -437,10 +438,15 @@
   if (!$tid) {
     $tid = userpoints_get_default_tid();
   }
-  elseif ($tid == 'all') {
-    return db_result(db_query('SELECT SUM(max_points) FROM {userpoints} WHERE uid = %d',  $uid));
+  if (!isset($max[$tid])) {
+    if ($tid == 'all') {
+      $max[$tid] = db_result(db_query('SELECT SUM(max_points) FROM {userpoints} WHERE uid = %d',  $uid));
+    }
+    else {
+      $max[$tid] = db_result(db_query('SELECT max_points FROM {userpoints} WHERE uid = %d AND tid = %d', $uid, $tid));
+    }
   }
-  return db_result(db_query('SELECT max_points FROM {userpoints} WHERE uid = %d AND tid = %d', $uid, $tid));
+  return $max[$tid];
 }
 
 /**
