diff --git a/src/ca65/error.c b/src/ca65/error.c
index f647fee43..3de780d86 100644
--- a/src/ca65/error.c
+++ b/src/ca65/error.c
@@ -120,13 +120,20 @@ static void PrintMsg (const FilePos* Pos, const char* Desc,
 static void AddNotifications (const Collection* LineInfos)
 /* Output additional notifications for an error or warning */
 {
+    unsigned I;
+    unsigned Skipped;
+
     /* The basic line info is always in slot zero. It has been used to
      * output the actual error or warning. The following slots may contain
-     * more information. Check them and additional notifications if they're
-     * present.
+     * more information. Check them and print additional notifications if
+     * they're present, but limit the number to a reasonable value.
      */
-    unsigned I;
-    for (I = 1; I < CollCount (LineInfos); ++I) {
+    unsigned MaxCount = CollCount (LineInfos);
+    if (MaxCount > 6) {
+        MaxCount = 6;
+    }               
+    Skipped = CollCount (LineInfos) - MaxCount;
+    for (I = 1; I < MaxCount; ++I) {
         /* Get next line info */
         const LineInfo* LI = CollConstAt (LineInfos, I);
         /* Check the type and output an appropriate note */
@@ -139,6 +146,12 @@ static void AddNotifications (const Collection* LineInfos)
                       "Macro was defined here");
         }
     }
+
+    /* Add a note if we have more stuff that we won't output */
+    if (Skipped > 0) {
+        PrintMsg (GetSourcePos (CollConstAt (LineInfos, 0)), "Note",
+                  "Dropping %u additional line infos", Skipped);
+    }
 }