diff --git a/info.textgrid.middleware.tgauth.webauth/WebAuthN/PutAttributes.php b/info.textgrid.middleware.tgauth.webauth/WebAuthN/PutAttributes.php
index 18c8b66eae17f2239d3f77b0e132afcf8f424292..a6eb82c3fe2c4fa504ee5dc1fb23c358482bb179 100755
--- a/info.textgrid.middleware.tgauth.webauth/WebAuthN/PutAttributes.php
+++ b/info.textgrid.middleware.tgauth.webauth/WebAuthN/PutAttributes.php
@@ -37,18 +37,21 @@ $rbac = new RBAC ( $configfile, $authZinstance );
 $Sid = $_REQUEST["Sid"];
 
 $attributes = $rbac->getUserAttributes( $Sid );
-$newattributes = array();
+// we always need one more argument, as PHP'S SOAP lib simplifies structures 
+// s.t. if we only want to modify exactly one attr, 
+// (it turns a:1{o:2{name,n,value,v}} into a:2{name,n,value,v})
+$newattributes = array("gnuelpfix"); 
 $thedisplayname = "anonymous";
 
 //phpinfo(); 
 foreach ($attributes as $a) {
   if ($util->isBoolean($a)) {
-    if (isset ( $_REQUEST[$a->name]) && $_REQUEST[$a->name] == TRUE) {
+    if (isset ( $_REQUEST[$a->name] ) && $_REQUEST[$a->name] === "on" && $a->value !== "TRUE") {
       $na = new StdClass();
       $na->name = $a->name;
       $na->value = "TRUE";
       $newattributes[] = $na;
-    } else {
+    } else if ($a->value === "TRUE" && !isset ( $_REQUEST[$a->name])) {
       $na = new StdClass();
       $na->name = $a->name;
       $na->value = "FALSE";
@@ -69,7 +72,7 @@ foreach ($attributes as $a) {
   }
 }
 
-//$file = fopen ("/tmp/xxxUR.log", "w+");
+//$file = fopen ("/tmp/xxxPut.log", "w+");
 //fwrite ($file, "putting these attrs: ". serialize ($newattributes) ."\n");
 //fclose ($file); 
 
diff --git a/info.textgrid.middleware.tgauth.webauth/tglib/LDAP.class.php b/info.textgrid.middleware.tgauth.webauth/tglib/LDAP.class.php
index 64646c1365bf97caae6f57d051c9637d40714f65..d19f5a77485116d154d9229a2e13eae5e20090f3 100644
--- a/info.textgrid.middleware.tgauth.webauth/tglib/LDAP.class.php
+++ b/info.textgrid.middleware.tgauth.webauth/tglib/LDAP.class.php
@@ -93,7 +93,7 @@ class LDAP {
     $sendOutMail = FALSE;
 
     foreach ($attrHash as $a) {
-      if (in_array($a->name, array_keys ($this->AttributeMap))) {
+      if (is_object($a) && in_array($a->name, array_keys ($this->AttributeMap))) {
 	$arrModify[$this->AttributeMap[$a->name]][] = $a->value;
 	$needsModification = TRUE;
 	if ($a->name === "mail") {
diff --git a/info.textgrid.middleware.tgauth.webauth/tglib/WebUtils.class.php b/info.textgrid.middleware.tgauth.webauth/tglib/WebUtils.class.php
index 41284c2a9e88bb11ac07df47268bb01badd7e04a..e65db1380597493acd4a3eaf18bfa04654d5a4c9 100644
--- a/info.textgrid.middleware.tgauth.webauth/tglib/WebUtils.class.php
+++ b/info.textgrid.middleware.tgauth.webauth/tglib/WebUtils.class.php
@@ -244,7 +244,7 @@ class WebUtils {
 
       echo "<tr><td>".$a->displayname." ${mandatory}</td>";
       if ($this->isBoolean ($a)) {
-	echo "<td><input type=\"checkbox\" name=\"". $a->name . "\" value=\"yes\" ${checked}/></td>\n";
+	echo "<td><input type=\"checkbox\" name=\"". $a->name . "\" value=\"on\" ${checked}/></td>\n";
       } else if ($this->isISO3166format ($a)) { 
 	if ($oldval === "") {$oldval = "DE";} // pre-assume German Scholars
 	echo "<td>";