Hi,
In general, you can't reference other cells inside <#tags>, because you can't be sure those cells will be filled when the <#tag> is evaluated. The order of evaluation is not defined, it used to be down-up and left to right (that is FlexCel started filling the report at the last cell, say D7, then D6... up to A1). Today the order is from A1 to left and down, but in the future we might introduce parallel filling where cells A1 and A2 are filled at the same time by different threads.
So in short: Don't reference cells from tags. Instead, use what the cell has. In your example, if I6 contains <#master.price> and i7 contains <#detail.price>, then write:
<#if <#detail.price> < <#master.price> ;<#Format Cell(Lower)>;)>
If the contents are more complex, say I7 is at its time some <#If...> thing, then you can define an expression in the config sheet. So you define for example the expression "DetailPrice" to be <#if...whatevergoes in i7>, then in I7 write <#DetailPrice> instead of the if, and the format becomes:
<#if <#DetailPrice> < I6;<#Format Cell(Lower)>;)>
That is, if the expression in the cell is simple, just write it directly, if not define an expression and use it both in the cell and in the <#if>
Another thing you can try, to have a better idea of what is going on, is to debug the report:
This will tell you the values of i7 and i6 and you can get a better idea of what is going on, but anyway, as said, just use as a rule not to reference any other cell that is filled dynamically. The order in which the cells are filled is not defined and has changed in the past, and might (likely) change in the future.