Trim off the skin and fat leaving just a very thin layer of fat on the meat, which can be prepared for you by your local butcher. Mix together all the ingredients for the marinade. Rub the marinade all over the lamb and set aside for at least 30 minutes.
To make the sauce, heat the oil in a large saucepan, add the whole spices and bay leaves and allow the spices to crackle. Add the onion, ginger, garlic and chilli powder and cook for 4-6 minutes.
Then add the chopped tomato the stock or water and simmer over a low heat for approximately 15 minutes, until the tomatoes have completely broken down and the onion becomes very soft. Puree in a blender or food processor, then strain through a fine sieve into a clean pan.
Bring back to the boil and simmer until the sauce thickens enough to coat the back of the spoon. Add the salt, sugar, garam masala, then sprinkle in the saffron and simmer for a further 2-3 minutes.
Adjust seasoning if necessary. Before serving, stir in the cream and finally finish the sauce by stirring in the cold butter.
Heat oil in a heavy based frying pan until hot, add the lamb racks and seal the racks approximately 20 -30 seconds each side. Transfer to a roasting tin. Place in a pre-heated oven 200°C. Roast the racks for approximately 6-8 minutes depending on the size and cut of the lamb.
Divide the sauce into 4 serving plates and place the lamb on top. Serve immediately garnished with some sprigs of coriander.
NOTE: The butter and cream emulsify the sauce, so it is best to add these right at the very end after checking the seasoning. Do not allow the sauce to boil after adding the butter or it will separate and become too thin.