I'd like to pitch in and recommend that you always start an UPDATE statement with SELECT statement. Like this:
SELECT *
--UPDATE m SET StatusRawCode = 25
FROM Message m
WHERE StatusRawCode in (
Select TOP 5
M2.StatusRawCode
From Message as M2
Where M2.StatusRawCode = 5
);
...but definitely fix up your query to your actual requirements, once you can see where you're going wrong (which in this case, would probably be similar to KG's response)
This will show you the rows that will be affected by your query... so once you have this correct, change the SELECT * for the UPDATE row (currently commented), and you should get predictable results.
Bear in mind though, that UPDATE doesn't support ORDER BY, so if you end up trying UPDATE TOP (5)..., then you won't get the results you want.
Rob