 <p>What you are suggesting does not make a lot of sense so there must be something outside the query that is causing this. </p> <p>My guess is that the types of the columns are:</p> <ul> <li>Act_Run_Hrs integer </li> <li>Act_Run_Labor_Hrs float</li> </ul> <p>In this case sql sever will do an implicit cast (like the following) from float to integer for Act_Run_Hrs which would give you the result you have seen.</p> <pre><code>UPDATE Job_Op_Time SET Act_Run_Qty = Act_Run_Qty + 1, Act_Run_Hrs = CAST(ROUND(CAST(((Act_Run_Qty + 1) * @Cycle) AS FLOAT)/3600,2) as int), Act_Run_Labor_Hrs = ROUND(CAST(((Act_Run_Qty + 1) * @Cycle) AS FLOAT)/3600,2) WHERE Job_Operation = @Op AND Work_Date = DATEADD(dd,0,DATEDIFF(dd,0,@L)) </code></pre> <p>Another possibility is that another transactions is getting in and altering the data between this update running and you looking at the result.</p>