I feel remiss because I promised to look at these when you sent them out
a while back, and never did. In any case, here are a few comments and
questions. I assume that you are basing your translation on a set of
records that have certain characteristics, so some of my comments may
not apply to your set. If so, just apply the "ignore" default ;-).

//mods/titleInfo/title -
  you say that you will catch and append any repeating subtitles. In
fact, both title and subtitle can repeat, and there's no theoretical
reason why subtitle would be more likely to repeat than title. So it
would appear that you have to loop for everything in the titleInfo
block, but taking them in order. (This includes elements you haven't
mentioned here, like nonSort, but maybe you don't get those.)

  This is derived from the 040 -- you have it under Creator, but if it's
used like the 040 it's the creator of the metadata record, not the
creator of the resource. I presume you wouldn't want to mix those up in
the same field.

   ? what's description mean here?

  There are lots of sub-elements here...Do you just take them in order?

also, related to DCTerms:isPartOf... I would include the "host" related
item as well as series in "isPartOf".

DCTerms:Created is listed on the DC pages as "Date of creation of the
resource" -- //mods/recordInfo/recordCreationDate is date of creation of
the metadata record. (008 00-05)

Happy Holidays,