Mix together the garlic, ginger, yogurt and fresh coriander and rub into the lamb. Marinate in the refrigerator for 4–6 hours. Heat half the oil in a heavy-based pan, add half the onions and cook for 12–15 minutes until golden. Add the meat and cook over a high heat for 15 minutes, stirring often.
Stir in the curry powder and tomatoes, season and bring to the boil. Reduce the heat and simmer for 30 minutes or until the lamb is tender. Set aside.
Meanwhile, heat the remaining oil in a separate pan. Add the cumin seeds, the remaining onion, cloves, peppercorns, cardamoms and cinnamon and stir-fry for 6–8 minutes. Add the rice and stir-fry for 2 minutes. Pour in the measured water, bring to the boil, cover and simmer for 6–7 minutes. Remove from the heat. Mix the saffron with the milk and set aside.
Lightly butter an ovenproof casserole dish. Spread a thin layer of the meat mixture over the base and cover evenly with half the rice. Drizzle over half the saffron mixture. Top with the remaining lamb then the remaining rice. Drizzle over the remaining saffron mixture and cover with foil and then the lid. Cook in a preheated oven at 180°C (350°F), Gas Mark 4, for 30 minutes.
Remove from the oven and allow to rest, still covered, for 30 minutes before serving.