I have a recurring problem with rank condition not being verified  eigen values exceeding forward looking variables. I would like to clarify a few things; at the risk of them possibly being very basic doubts 

How does one decide if a particular variable is predetermined or not. I understand that ‘traditional’ suspects in the most basic models are capital and bonds. But what is the litmus test one needs to ask to check if an endogenous variable is predetermined?

Once we’ve identified predetermined variables, how should one proceed with timing these variables in Dynare?
Some papers seem to advocate writing equations that have k(+1) or B(+1) on the LHS. The Dynare manual then advises to add a command “predetermined_variables” at the beginning of the code.
e.g. k_hat(+1)=(1delta)k_hat+(delta(i_hat+tau_i_hat)); or (b_ssb_hat(+1))=((1+r)b_ss(b_hat+r_hatpie_hat(+1)))+(g_ssg_hat)(t_ss*t_hat);
Other papers avoid using (+1) for any equation involving predetermined variables.
The Dynare manual says that both should lead to the same result conceptually. Except that in my code that isn’t the case! The eigen values are different in each case (and rank condition unsatisfied). Is there a best practice to adopt for timing predetermined variables?
 Finally, for fulfilling rank condition with insufficient variables, can I consider ‘definition’ equations in my model and modify their timings? For instance, when one defines domestic inflation: pie_h_hat=pr_h_hatpr_h_hat(1)+pie_hat; can we instead rephrase this as pie_h_hat(+1)=pr_h_hat(+1)pr_h_hat+pie_hat(+1); simply to generate the adequate number of forward looking variables?
Any help with these questions would be much appreciated.
Thanks!