Heat the oil in a large pot or saucepan.
Over high heat, fry the onions and garlic, stirring continuously. Add the ginger, curry powder and all the spices and continue stirring for a minute. Season to taste with pepper and add the salt.
Reduce heat slightly. Add the meat and fry it until it is browned on all sides. (This may be easier if you remove the onions, garlic and ginger mixture and set them aside, then return them to the pot after the meat is browned.).
Add the vinegar and stock, plus all the other remaining ingredients (except the apricot jam and yoghurt). Cover. Reduce heat. Simmer over a low heat, stirring occasionally, until everything is tender, approximately 1 1/2 hours for lamb and 2 hours for mutton, maybe a little longer.
Stir in the apricot jam and the yoghurt a few minutes before serving.
Serve this curry with yellow rice and a variety of sambals and atjars.