The following behavior is strange to me, but I am not sure if it is a bug or I have done something wrong. dayTimeDuration (dtduration) is defined in mil as: .ATOM dtduration = lng; .FROMSTR = dtduration_fromstr; .TOSTR = dtduration_tostr; .END; and in c as : typedef long long dtduration; also .tostr has the following sign. int dtduration_tostr(str *buf, int *len, dtduration *val) you can find all this in MonetDB4/src/modules/plain/monettime.mx Now, if I do either: dtduration("P12DT1H").print() [dtduration]("P12DT1H").print() I get the correct value printed. But if I create a BAT (void,str): var a0006 := new (void,str).seqbase (0@0); a0006.append("P12DT1H"); and do: [dtduration](a0006).print(); It gives back "PT0S", which means 0 duration, and thus the value of *val in dtduration_tostr is 0 (I checked that). So, could that be some bug with correct dealing of long values in the multiplex creation (btw. where is that happening?) Or am I missing some special case that I should take into consideration with long values? Thank you, lefteris P.S. yearMonthDuration which is defined as int works like a charm.