diff --git a/application/models/tables/CourseCrosslistings.php b/application/models/tables/CourseCrosslistings.php
index c5ffb95e8aa4d9aeadb29d29b682e38a37d37a8f..7a647cf8529c20d550ee7651edcf280360a3b55f 100644
--- a/application/models/tables/CourseCrosslistings.php
+++ b/application/models/tables/CourseCrosslistings.php
@@ -29,7 +29,7 @@ class CourseCrosslistings extends Local_Db_CourseTableMany
      * @param string $letter
      * @return CourseCrosslisting
      */
-    static public function fetchBySubjectNumberLetter($subject, $number, $letter = null)
+    static public function fetchBySubjectNumberLetter($subject, $number, $letter = null, $official = true)
     {
         $me = self::getInstance();
         $db = $me->getAdapter();
@@ -48,7 +48,14 @@ class CourseCrosslistings extends Local_Db_CourseTableMany
                       'creqCourseCrosslistings.generation = creqCourseGenerations.' . $courseGenerationsPrimaryKeyName);
         $select->join('creqAssets',
                       'creqCourseGenerations.assetId = creqAssets.' . $assetsPrimaryKeyName);
-        $select->where('creqCourseGenerations.type = "official"');
+        if ($official) {
+            $select->where('creqCourseGenerations.type = "official"');
+        } else {
+            $select->join('creqRequests',
+                          'creqRequests.requestId = creqCourseGenerations.request');
+            $select->where('creqCourseGenerations.type != "official"');
+            $select->where('creqRequests.complete != "yes"');
+        }
         $select->where($db->quoteInto('subject = ?', $subject));
         $select->where($db->quoteInto('courseNumber = ?', $number));
         $select->where($db->quoteInto('courseLetter = ?', $letter));