The contract is based on this post. I have used the wacky code in all my procs that use temp tables or dynamic sql so the source can get the meta data for the columns.
http://www.sqlservercentral.com/articles/Integration+Services+(SSIS)/65112/
Then I hard code a small date range of 5-1-2001, 5001-1-2001 for the parameters and then I can preview.
inside the dynamic procedure I build the SQL statement with the typical
Set @strSql = @strSQL + 'exec myproc'
Set @strSql = @strSQL + parameter values
Then at the end of the proc
EXEC (@strSQL)
i finally figured out my problem. My contract was missing a couple columns that were coming back in the results. So one of the columns that was not an integer fell in the order of one of the integer columns.