Update : Slight uniqueness issue fixed. Thanks to Liu Bobby for pointing it out, and apologies for the issue.
This took me quite a long time to get working, and has turned out to have more logical workouts than I thought would be the case when I started upon it.
Follow Masyu rules. Not all circles need to be visited by the loop. For the circles not visited by the loop, the number in them gives the number of cells visited by the loop in that direction. For the circles visited by the loop, the converse rule applies and the number is a liar, i.e. the number of cells visited by the loop in that direction cannot be that number.
Rated : Hard.