diff --git a/doc/wiz/fehlerteufel b/doc/wiz/fehlerteufel
index 0d68acd..71ea058 100644
--- a/doc/wiz/fehlerteufel
+++ b/doc/wiz/fehlerteufel
@@ -44,15 +44,16 @@
     cd /d/unterwelt/raeume
     fehlerabfrage wald3
 
-- fehlerloeschen <id>
-  Fehler mit der ID <id> zum Loeschen markieren (z.B. wenn gefixt). Die 
-  eigentlich Loeschung findet innerhalb von 24h statt. Die Fehler werden nach 
+- fehlerloeschen [<id>] [<bemerkung>]
+  Fehler mit der ID <id> zum Loeschen markieren (z.B. wenn gefixt) und die 
+  Bemerkung, sofern eine uebergeben wurde, wird angehaengt. Die eigentliche
+  Loeschung findet innerhalb von 24h statt. Die Fehler werden nach 
   diesem Befehl nicht mehr in der Fehlerliste angezeigt. Ohne Angabe der <id>
   wird der letzte benutzte Fehler geloescht.
   Wiederholt man den Befehl, wird die Loeschmarkierung wieder entfernt.
   Es kann auch der Ladename eines Objekts angegeben werden, dann werden alle
   zu diesem Objekt gehoerenden Eintraege auf einmal geloescht, z.B.
-    fehlerloeschen d/unterwelt/raeume/wald3
+    fehlerloeschen /d/unterwelt/raeume/wald3
 
 - fehlereingabe <objekt|dateiname>
   Hiermit laesst sich per Hand ein Eintrag fuer das angegebene Objekt oder
diff --git a/obj/tools/fehlerteufel.c b/obj/tools/fehlerteufel.c
index 664eb07..9cc27d2 100644
--- a/obj/tools/fehlerteufel.c
+++ b/obj/tools/fehlerteufel.c
@@ -185,7 +185,7 @@
 
 // Loescht alle Fehler und Warnungen eines Objekts (soweit per modus
 // ausgewaehlt). Entscheidend ist der _Loadname_!
-private int DeleteErrorsForLoadname(string loadname)
+private int DeleteErrorsForLoadname(string loadname, string note)
 {
   int sum_deleted;
   // Bei == 0 wird sonst alles geloescht. ;-)
@@ -201,7 +201,7 @@
     {
       foreach(<int|string>* row : list)
       {
-          if (({int})ERRORD->ToggleDeleteError(row[0]) == 1)
+          if (({int})ERRORD->ToggleDeleteError(row[0], note) == 1)
           {
             tell_object(PL,
                 row[0] + " als geloescht markiert.\n");
@@ -217,15 +217,27 @@
 {
   int issueid;
   arg = ({string})this_player()->_unparsed_args(0);
+  // Fuehrende Leerzeichen entfernen, um ID und Notiz zuverlaessig trennen zu
+  // koennen.
+  arg = trim(arg, TRIM_LEFT);
 
   if (stringp(arg) && sizeof(arg))
       issueid = to_int(arg);
   else
       issueid = lfehler;
+  // Alles ab dem zweiten Wort sollte eine Notiz sein.
+  int spacepos = strstr(arg, " ");
+  string note;
+  if(spacepos != -1)
+  {
+    note = arg[spacepos + 1 ..];
+    arg = arg[.. spacepos - 1];
+  }
+  
 
   notify_fail("Einen Eintrag mit dieser ID/diesem Loadname gibt es nicht!\n");
 
-  int res = ({int})ERRORD->ToggleDeleteError(issueid);
+  int res = ({int})ERRORD->ToggleDeleteError(issueid, note);
   if (res == 1)
   {
     tell_object(PL,
@@ -248,7 +260,7 @@
     return 1;
   }
   // res war == -1 -> Fehler nicht gefunden. Vielleicht ist es nen Loadname
-  return DeleteErrorsForLoadname(arg);
+  return DeleteErrorsForLoadname(arg, note);
 }
 
 public int CmdRefresh(string arg) {
