adjust--to-timezone() with no parameters, when the input is a time-without-timezone, says "treat this input time as representing a time in timezone IT", where IT is the implicit timezone taken from the evaluation context (which in practice means from the computer's system clock settings). I think you want to treat it as a time in timezone Z, which you can achieve using
adjust--to-timezone($in, xs:dayTimeDuration('PT0H'))
You can then convert this to timezone +02:00, or to IT, by a further call on the function:
adjust--to-timezone($temp, xs:dayTimeDuration('PT2H'))
or simply
adjust--to-timezone($temp)
where $temp is the result of the first call.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference