Place the cayenne, black pepper, paprika, ginger, turmeric and cinnamon into a small bowl and mix to combine. Place the lamb in a large bowl and toss together with half of the spice mix. Cover and leave overnight in the fridge.
Preheat the oven to 150C/300F/Gas2.
Heat 1 tbsp olive oil and 1 tbsp of argan oil in a large casserole dish. Add the grated onion and the remaining spice mix and cook over a gentle heat for 10 minutes so that the onions are soft but not coloured. Add the crushed garlic for the final 3 minutes.
In a separate frying pan, heat the remaining oil and brown the cubes of lamb on all sides then add the browned meat to the casserole dish. De-glaze the frying pan with ¼ pint of tomato juice and add these juices to the pan.
Add the remaining tomato juice, chopped tomatoes, apricots, dates, raisins or sultanas, flaked almonds, saffron, lamb stock and honey to the casserole dish. Bring to the boil, cover with a fitted lid, place in the oven and cook for 2-2½ hours or until the meat is meltingly tender.
Place the lamb in a tagine or large serving dish and sprinkle over the chopped herbs. Serve.
Argan oil is a Moroccan oil from the argan tree. You should be able to find it in specialist food shops.