diff --git a/regression_test/XML/XmlWorkflow/XmlTest_expectedTtcns/www_example_org_enumeration_restriction_e.ttcn b/regression_test/XML/XmlWorkflow/XmlTest_expectedTtcns/www_example_org_enumeration_restriction_e.ttcn
index ef57f20dc33ea006e53d7128eb35cd6a15df5cd9..9c9ce5ed1fa6f0adc7146b73e2e4484afbdba722 100644
--- a/regression_test/XML/XmlWorkflow/XmlTest_expectedTtcns/www_example_org_enumeration_restriction_e.ttcn
+++ b/regression_test/XML/XmlWorkflow/XmlTest_expectedTtcns/www_example_org_enumeration_restriction_e.ttcn
@@ -44,6 +44,18 @@ module www_example_org_enumeration_restriction {
 import from XSD all;
 
 
+const NMTOKENSEnumeration c_defaultForEmpty_1 := false_;
+
+
+const IDREFSEnumeration c_defaultForEmpty_2 := false_;
+
+
+const NMTOKENSEnumType c_defaultForEmpty_3 := false_;
+
+
+const IDREFSEnumType c_defaultForEmpty_4 := false_;
+
+
 type E21unnamed_type E21unnamed
 with {
   variant "name as uncapitalized";
@@ -224,11 +236,67 @@ type record Element
 }
 with {
   variant "element";
+  variant (modal) "defaultForEmpty as c_defaultForEmpty_1";
   variant (modal) "attribute";
+  variant (modal2) "defaultForEmpty as c_defaultForEmpty_2";
   variant (modal2) "attribute";
 };
 
 
+type NMTOKENSEnumType NMTOKENSEnumElem
+with {
+  variant "defaultForEmpty as c_defaultForEmpty_3";
+  variant "element";
+};
+
+
+type enumerated NMTOKENSEnumType
+{
+	false_,
+	true_
+}
+with {
+  variant "text 'false_' as 'false'";
+  variant "text 'true_' as 'true'";
+};
+
+
+type NMTOKENSType NMTOKENSElem
+with {
+  variant "element";
+};
+
+
+type XSD.NMTOKENS NMTOKENSType;
+
+
+type IDREFSEnumType IDREFSEnumElem
+with {
+  variant "defaultForEmpty as c_defaultForEmpty_4";
+  variant "element";
+};
+
+
+type enumerated IDREFSEnumType
+{
+	false_,
+	true_
+}
+with {
+  variant "text 'false_' as 'false'";
+  variant "text 'true_' as 'true'";
+};
+
+
+type IDREFSType IDREFSElem
+with {
+  variant "element";
+};
+
+
+type XSD.IDREFS IDREFSType;
+
+
 }
 with {
   encode "XML";
diff --git a/regression_test/XML/XmlWorkflow/xsd/enumeration_restriction.xsd b/regression_test/XML/XmlWorkflow/xsd/enumeration_restriction.xsd
index 5b5d0bdf1cd8538844bd751e4fdc37fe7f6c6f4b..eb02f88b70e33b0f78b3f26b51cc7418cc4b9b80 100644
--- a/regression_test/XML/XmlWorkflow/xsd/enumeration_restriction.xsd
+++ b/regression_test/XML/XmlWorkflow/xsd/enumeration_restriction.xsd
@@ -167,4 +167,36 @@
 </xs:complexType>
 </xs:element>
 
+
+<xs:element name="NMTOKENSEnumElem" type="this:NMTOKENSEnumType" default="false"/>
+
+<xs:simpleType name="NMTOKENSEnumType">
+   <xs:restriction base="xs:NMTOKENS">
+      <xs:enumeration value="true"/>
+      <xs:enumeration value="false"/>
+   </xs:restriction>
+</xs:simpleType>
+
+<xs:element name="NMTOKENSElem" type="this:NMTOKENSType" default="false"/>
+
+<xs:simpleType name="NMTOKENSType">
+   <xs:restriction base="xs:NMTOKENS"/>
+</xs:simpleType>
+
+
+<xs:element name="IDREFSEnumElem" type="this:IDREFSEnumType" default="false"/>
+
+<xs:simpleType name="IDREFSEnumType">
+   <xs:restriction base="xs:IDREFS">
+      <xs:enumeration value="true"/>
+      <xs:enumeration value="false"/>
+   </xs:restriction>
+</xs:simpleType>
+
+<xs:element name="IDREFSElem" type="this:IDREFSType" default="false"/>
+
+<xs:simpleType name="IDREFSType">
+   <xs:restriction base="xs:IDREFS"/>
+</xs:simpleType>
+
 </xs:schema>
diff --git a/xsdconvert/Constant.cc b/xsdconvert/Constant.cc
index 29fa165b9310ee4ccc0bd83da80a5ff45608047a..211783027d7c9f32caf001c85be1860e391d0ee7 100644
--- a/xsdconvert/Constant.cc
+++ b/xsdconvert/Constant.cc
@@ -108,8 +108,11 @@ void Constant::finalModification() {
     type.upload(newtype);
   }
   
-  // Theese types do not support enumeration restriction
-  if (tmp_type == "NMTOKENS" || tmp_type == "IDREFS" || tmp_type == "ENTITIES") {
+  // These types do not support enumeration restriction
+  if (!(parent->getEnumeration().modified ||
+     (parent->getReference().get_ref() != NULL &&
+     ((SimpleType*)(parent->getReference().get_ref()))->getEnumeration().modified))
+    && (tmp_type == "NMTOKENS" || tmp_type == "IDREFS" || tmp_type == "ENTITIES")) {
     // These are not supported by TITAN.
     // Reset the default value and fixed value
     parent->getValue().default_value = "";