I am revising the spreadsheet anyway - some functions were missing - I will send it out soon. But I do not think there is a problem with this - we naturally have all arguments as sequences anyway - due to the nature of attribute selection in context. There is nothing confusing about what this functions return as they will provide the exact same result on single<type> as on ne_sequence<type>. Whatever function consumes their result will deal with the sequence being of incorrect length. Use case would be: if context has multiple values of a decimal argument foo, and you want to check whether at least one of the values, rounded, is equal to an integer 3. you will use (member_of ((attribute value type=int)3) (round (attribute selector name=foo))) On the other hand I would not advice specifying map_X functions with sequence<type>, instead of ne_sequence<>. What are their result for an empty sequence? They should produce an error, as specified for an empty sequence. So you addition does seem to clarify anything, but introduces a unspecified behaviour for an empty sequence.. Daniel.