Try applying abs() to the diffs - you might have the direction of your circle wrong. Also one of those hdg inequalities should be "<=" or ">=" in case you cross 240 with a value of exactly 240. Also the value of "25" could probably be larger. When a reset from 0 to 360 occurs at reasonable sampling frequency, could you guarantee a jump of 200 or more? That would ensure you don't miss any valid 240 degree crossings.
idx = find(abs(diff(hdg)) < 200 & hdg(1:end-1) < 240 & hdg(2:end) >= 240);
If this doesn't work, you should save diff(hdg) to a variable and inspect it. Maybe plot it as well.
Hope this helps.