diff --git a/library/DIAMETER_Templates.ttcn b/library/DIAMETER_Templates.ttcn
index 63db7fc..8bb53e0 100644
--- a/library/DIAMETER_Templates.ttcn
+++ b/library/DIAMETER_Templates.ttcn
@@ -101,6 +101,22 @@
 	DIAMETER_ERROR_EAP_CODE_UNKNOWN			(5048)
 };
 
+/* 3GPP TS 29.272 section 7.4. Errors in Experimental-Result-Code */
+type enumerated DIAMETER_ExperimentalResultcode {
+	/* transient */
+	DIAMETER_AUTHENTICATION_DATA_UNAVAILABLE 	(4181),
+	DIAMETER_ERROR_CAMEL_SUBSCRIPTION_PRESENT 	(4182),
+	/* permanent */
+	DIAMETER_ERROR_USER_UNKNOWN			(5001),
+	DIAMETER_AUTHORIZATION_REJECTED			(5003),
+	DIAMETER_ERROR_ROAMING_NOT_ALLOWED		(5004),
+	DIAMETER_MISSING_AVP				(5005),
+	DIAMETER_ERROR_UNKNOWN_EPS_SUBSCRIPTION		(5420),
+	DIAMETER_ERROR_RAT_NOT_ALLOWED			(5421),
+	DIAMETER_ERROR_EQUIPMENT_UNKNOWN		(5422),
+	DIAMETER_ERROR_UNKOWN_SERVING_NODE		(5423)
+}
+
 /* Gy : 3GPP TS 32.299 7.1.6, RFC4006 3.1 */
 const uint32_t c_DIAMETER_CREDIT_CONTROL_AID := 4;
 /* 3GPP TS 29.272 Section 7.1.8 */
@@ -338,6 +354,24 @@
 		}
 	}
 }
+private function f_tr_AVP_VendorId(template (present) Vendor_Id vendor_id)
+return template (present) BASE_NONE_Vendor_Id {
+	if (istemplatekind(vendor_id, "?")) {
+		return ?;
+	} else {
+		var template (present) BASE_NONE_Vendor_Id c;
+		c := int2oct(enum2int(valueof(vendor_id)), 4);
+		return c;
+	}
+}
+template (present) GenericAVP tr_AVP_VendorId(template (present) Vendor_Id vendor_id) := {
+	avp := {
+		avp_header := tr_DIA_Hdr(c_AVP_Code_BASE_NONE_Vendor_Id),
+		avp_data := {
+			avp_BASE_NONE_Vendor_Id := f_tr_AVP_VendorId(vendor_id)
+		}
+	}
+}
 
 template (value) GenericAVP ts_AVP_ProductName(charstring name) := {
 	avp := {
@@ -451,6 +485,28 @@
 	}
 }
 
+template (present) GenericAVP tr_AVP_ExperimentalResultCode(template (present) AVP_Unsigned32 n := ?) := {
+	avp := {
+		avp_header := tr_DIA_Hdr(c_AVP_Code_BASE_NONE_Experimental_Result_Code),
+		avp_data := {
+			avp_BASE_NONE_Experimental_Result_Code := n
+		}
+	}
+}
+
+template (present) GenericAVP tr_AVP_ExperimentalResult(template (present) Vendor_Id vendor_id := ?,
+							template (present) AVP_Unsigned32 err_code := ?
+							) := {
+	avp := {
+		avp_header := tr_DIA_Hdr(c_AVP_Code_BASE_NONE_Experimental_Result),
+		avp_data := {
+			avp_BASE_NONE_Experimental_Result := {
+				tr_AVP_VendorId(vendor_id),
+				tr_AVP_ExperimentalResultCode(err_code)
+			}
+		}
+	}
+}
 
 template (value) GenericAVP ts_AVP_SuppVendorIdRaw(uint32_t vendor_id) := {
 	avp := {
@@ -471,11 +527,21 @@
 		}
 	}
 }
-template (present) GenericAVP tr_AVP_ResultCode(DIAMETER_Resultcode res_code) := {
+private function f_tr_DIAMETER_Resultcode(template (present) DIAMETER_Resultcode res_code)
+return template (present) BASE_NONE_Result_Code {
+	if (istemplatekind(res_code, "?")) {
+		return ?;
+	} else {
+		var template (present) BASE_NONE_Result_Code c;
+		c := int2oct(enum2int(valueof(res_code)), 4);
+		return c;
+	}
+}
+template (present) GenericAVP tr_AVP_ResultCode(template (present) DIAMETER_Resultcode res_code) := {
 	avp := {
 		avp_header := tr_DIA_Hdr(c_AVP_Code_BASE_NONE_Result_Code),
 		avp_data := {
-			avp_BASE_NONE_Result_Code := int2oct(enum2int(res_code), 4)
+			avp_BASE_NONE_Result_Code := f_tr_DIAMETER_Resultcode(res_code)
 		}
 	}
 }
@@ -1414,6 +1480,25 @@
 			tr_AVP_ResultCode(DIAMETER_SUCCESS),
 			tr_AVP_3GPP_AuthInfo(auth_info_contents)
 	));
+template (present) PDU_DIAMETER
+tr_DIA_AIA_ERR(template (present) GenericAVP err_avp := ?,
+	   template (present) octetstring sess_id := ?,
+	   template (present) charstring orig_host := ?,
+	   template (present) charstring orig_realm := ?,
+	   template (present) UINT32 hbh_id := ?,
+	   template (present) UINT32 ete_id := ?) :=
+	tr_DIAMETER(flags := '0???????'B,
+		    cmd_code := Authentication_Information,
+		    app_id := int2oct(c_DIAMETER_3GPP_S6_AID, 4),
+		    hbh_id := hbh_id,
+		    ete_id := ete_id,
+		    avps := superset(
+			tr_AVP_SessionId(sess_id),
+			tr_AVP_AuthSessionState(NO_STATE_MAINTAINED),
+			tr_AVP_OriginHost(orig_host),
+			tr_AVP_OriginRealm(orig_realm),
+			err_avp
+	));
 
 
 /* TS 29.272 7.2.3 Update Location Request */
