diff --git a/compiler/cpp/src/generate/t_erl_generator.cc b/compiler/cpp/src/generate/t_erl_generator.cc
index ea4d30f..f90abcb 100644
--- a/compiler/cpp/src/generate/t_erl_generator.cc
+++ b/compiler/cpp/src/generate/t_erl_generator.cc
@@ -76,7 +76,8 @@
   std::string render_member_value(t_field * field);
   std::string render_member_requiredness(t_field * field);
 
-  std::string render_default_value(t_type* type);
+//  std::string render_default_value(t_type* type);
+  std::string render_default_value(t_field * field);
   std::string render_const_value(t_type* type, t_const_value* value);
   std::string render_type_term(t_type* ttype, bool expand_structs, bool extended_info = false);
 
@@ -129,6 +130,8 @@
 
  private:
 
+  bool has_default_value(t_field *);
+
   /**
    * add function to export list
    */
@@ -461,7 +464,8 @@
 }
 
 
-string t_erl_generator::render_default_value(t_type* type) {
+string t_erl_generator::render_default_value(t_field* field) {
+  t_type *type = field->get_type();
   if (type->is_struct() || type->is_xception()) {
     return "#" + uncapitalize(type->get_name()) + "{}";
   } else if (type->is_map()) {
@@ -481,7 +485,7 @@
     t_base_type::t_base tbase = ((t_base_type*)type)->get_base();
     switch (tbase) {
     case t_base_type::TYPE_STRING:
-      return "string()";
+      return "string() | binary()";
     case t_base_type::TYPE_BOOL:
       return "boolean()";
     case t_base_type::TYPE_BYTE:
@@ -561,7 +565,7 @@
   for (vector<t_field*>::const_iterator m_iter = members.begin(); m_iter != members.end();) {
     generate_erl_struct_member(buf, *m_iter);
     if ( ++m_iter != members.end() ) {
-      buf << ", " << endl << field_indent;
+      buf << "," << endl << field_indent;
     }
   }
   buf << "}).";
@@ -576,13 +580,28 @@
 void t_erl_generator::generate_erl_struct_member(ostream & out, t_field * tmember)
 {
   out << uncapitalize(tmember->get_name());
-  out << " = "  << render_member_value(tmember);
+  if (has_default_value(tmember))
+    out << " = "  << render_member_value(tmember);
   out << " :: " << render_member_type(tmember);
 }
 
+bool t_erl_generator::has_default_value(t_field * field) {
+  t_type *type = field->get_type();
+  if (!field->get_value()) {
+    if (type->is_struct() || type->is_xception() || type->is_map() ||
+        type->is_set() || type->is_list()) {
+      return true;
+    } else {
+      return false;
+    }
+  } else {
+    return true;
+  }
+}
+
 string t_erl_generator::render_member_value(t_field * field) {
   if (!field->get_value()) {
-    return render_default_value(field->get_type());
+    return render_default_value(field);
   } else {
     return render_const_value(field->get_type(), field->get_value());
   }
@@ -935,6 +954,7 @@
 
       std::stringstream buf;
       buf << "{struct, [";
+      string field_indent(buf.str().size(), ' ');
 
       t_struct::members_type const& fields = static_cast<t_struct*>(type)->get_members();
       t_struct::members_type::const_iterator i, end = fields.end();
@@ -956,7 +976,7 @@
         }
 
         if ( ++i != end ) {
-          buf << ", ";
+          buf << "," << endl << field_indent;
         }
       }
 
diff --git a/lib/erl/Makefile.am b/lib/erl/Makefile.am
index 8cd2ca0..9505024 100644
--- a/lib/erl/Makefile.am
+++ b/lib/erl/Makefile.am
@@ -71,7 +71,8 @@
 		  test/thriftTest_* \
 		  test/optionalRequiredTest_* \
 		  test/yowza_* \
-		  test/reverseOrderService_*
+		  test/reverseOrderService_* \
+		  test/manyOptionals_*
 	./rebar clean
 
 maintainer-clean-local:
diff --git a/lib/erl/test/Thrift1475.thrift b/lib/erl/test/Thrift1475.thrift
new file mode 100644
index 0000000..4aa7f72
--- /dev/null
+++ b/lib/erl/test/Thrift1475.thrift
@@ -0,0 +1,22 @@
+struct StructA
+{
+  1: string a,
+  2: binary b,
+  3: optional string c,
+  4: optional binary d,
+  5: required string e,
+  6: required binary f,
+  7: string g = "foo",
+  8: i32 h,
+  9: optional i32 i,
+  10: required i32 j,
+  11: required i32 k = 5,
+  12: double l,
+  13: optional double m,
+  14: required double n,
+  15: double o = 3.14159,
+  16: list<string> string_list,
+  17: list<byte> byte_list = [1, 2, 3],
+  18: set<string> string_set,
+  19: map<string, string> string_map
+}
