diff --git a/doc/sphinx/lfun/Query.rst b/doc/sphinx/lfun/Query.rst
index 0a27959..31f2ce0 100644
--- a/doc/sphinx/lfun/Query.rst
+++ b/doc/sphinx/lfun/Query.rst
@@ -5,7 +5,7 @@
 --------
 ::
 
-     public varargs mixed Query(string name, int Type);
+     public mixed Query(string name, int Type = F_VALUE);
 
 DEFINIERT IN
 ------------
diff --git a/doc/sphinx/lfun/Set.rst b/doc/sphinx/lfun/Set.rst
index ffca76a..bf2dbad 100644
--- a/doc/sphinx/lfun/Set.rst
+++ b/doc/sphinx/lfun/Set.rst
@@ -5,7 +5,8 @@
 --------
 ::
 
-     public varargs mixed Set(string name, mixed Value, int Type, int extern);
+     public mixed Set(string name, mixed Value,
+                 int Type = F_VALUE, int drop_priv = extern_call())
 
 DEFINIERT IN
 ------------
@@ -21,8 +22,8 @@
      name - Property, die manipuliert werden soll
      Value - der zu setzende/aendernde Wert
      Type - die Eigenschaft der Property, die manipuliert werden soll
-     extern - Interne Verwendung:
-    Wurde Set ueber SetProp von aussen gerufen.
+     drop_priv - Interne Verwendung, wenn Aufrufer Privilegien abgibt,
+                 z.B. objekt-interner Aufruf extern zaehlen soll.
 
 BESCHREIBUNG
 ------------
@@ -170,5 +171,5 @@
      Konzept:  properties, /std/thing/properties.c
      Sonstiges:  P_AUTOLOADOBJ
 
-06. Jan 2008 Arathorn
+8.9.2021, Zesstra
 
diff --git a/std/thing/properties.c b/std/thing/properties.c
index e97983f..1e7cdad 100644
--- a/std/thing/properties.c
+++ b/std/thing/properties.c
@@ -64,27 +64,34 @@
 
 
 // Set() -- provides direct access to a property, no filters
-public varargs mixed Set( string name, mixed Value, int Type, int extern )
+// Type=F_VALUE und drop_priv=extern_call() by default
+public mixed Set(string name, mixed Value, int Type, int drop_priv)
 {
-
   if (!objectp(this_object()))
     return 0;
 
   // Properties, die SECURED oder PROTECTED sind, duerfen nur vom Objekt
-  // selber, EM+ oder ROOT veraendert werden
+  // selber, EM+ oder ROOT veraendert werden.
+  // Es ist verfuehrerisch, das 'drop_priv||extern_call()' durch 'drop_priv'
+  // zu ersetzen, weil extern_call() das default-argument fuer <drop_priv>
+  // ist. Das ist keine gute Idee, weil <drop_priv> unter der Kontrolle des
+  // Aufrufers ist und dieser 0 uebergeben kann. Sprich: wenn es 0 ist,
+  // muessen wir dennoch selber pruefen. Wir glauben aber immer, wenn es 1
+  // ist und der Aufrufer Privilegien abgeben will.
   if ((prop[F_MODE][name]&(PROTECTED|SECURED))&&
-      (closure_call||extern||extern_call()) &&
+      (closure_call||drop_priv||extern_call()) &&
        previous_object() != this_object() && !allowed())
     return -1;
-  
+
   // Das SECURED-Flag darf bei Properties nicht mehr geloescht werden
   if ((prop[F_MODE][name]&SECURED)&&
       (Type==F_MODE||Type==F_MODE_AD)&&(Value & SECURED))
     return -2;
-  
+
   // Setzen duerfen das SECURED-Flag nur das Objekt selber, EM+ oder ROOT
+  // 'drop_priv||extern_call()' ist Absicht, s.o.
   if ((Type==F_MODE||Type==F_MODE_AS)&&(Value&SECURED)&&
-      (closure_call ||extern || extern_call()) &&
+      (closure_call || drop_priv || extern_call()) &&
        previous_object() != this_object() && !allowed() )
     return -3;
 
@@ -127,7 +134,8 @@
 
 
 // Direktes Auslesen der Property ohne Filter ...
-public varargs mixed Query( string name, int Type )
+// Type = F_VALUE by default
+public mixed Query( string name, int Type )
 {
     if (pointerp(prop)) return prop[Type][name];
     return 0;
diff --git a/sys/thing/properties.h b/sys/thing/properties.h
index 9feed60..6e26337 100644
--- a/sys/thing/properties.h
+++ b/sys/thing/properties.h
@@ -42,8 +42,9 @@
 // prototypes
 
 // direct property access
-public varargs mixed Set(string name, mixed Value, int Type, int extern);
-public varargs mixed Query(string name, int Type);
+public mixed Set(string name, mixed Value,
+                 int Type = F_VALUE, int drop_priv = extern_call());
+public mixed Query(string name, int Type = F_VALUE);
 
 // filtered property access
 public mixed SetProp(string name, mixed Value);
