1-Could you show the definition of the original methods?
2-What happens if you change dynamic to just object in the variable declaration?
3-You don't have secondInteropMethod overloaded, do you?
4-could you also elaborate on how the end value is wrong? is it unaffected by te first method or the second method? both? i sustect this could be a boxing issue.
This MSDN article
on dynamic explains why casting is needed for COM Interop when operations declare the parameter type as object and indicates that using the /link:filelist compiler option will allow you to define the COM method signatures as dynamic as well.
The article I cited was in response to why a cast is necessary. The specific line in the article (under the COM Interop heading) states: "Many COM methods allow for variation in argument types and return type by designating the types as object. This has necessitated explicit casting of the values to coordinate with strongly typed variables in C#."