diff --git a/res/eressea/races.xml b/res/eressea/races.xml
index 69eda95..804b7e8 100644
--- a/res/eressea/races.xml
+++ b/res/eressea/races.xml
@@ -1172,7 +1172,7 @@
     <familiar race="wolf"/>
     <familiar race="rat"/>
   </race>
-  <race name="orc" magres="-5" maxaura="1.000000" regaura="1.000000" recruitcost="70" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
+  <race name="orc" studyspeed="-5" magres="-5" maxaura="1.000000" regaura="1.000000" recruitcost="70" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
     <ai splitsize="10000" moverandom="yes" learn="yes"/>
     <param name="recruit_multi" value="0.5"/>
     <skill name="alchemy" modifier="1"/>
diff --git a/res/races/orc.xml b/res/races/orc.xml
index 4f4d96e..a003375 100644
--- a/res/races/orc.xml
+++ b/res/races/orc.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" ?>
-<race name="orc" magres="-5" maxaura="1.000000" regaura="1.000000" recruitcost="70" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
+<race name="orc" studyspeed="-5" magres="-5" maxaura="1.000000" regaura="1.000000" recruitcost="70" maintenance="10" weight="1000" capacity="540" speed="1.000000" hp="24" damage="1d5" unarmedattack="-2" unarmeddefense="-2" playerrace="yes" walk="yes" giveperson="yes" giveunit="yes" getitem="yes" equipment="yes">
     <ai splitsize="10000" moverandom="yes" learn="yes"/>
     <param name="recruit_multi" value="0.5"/>
     <skill name="alchemy" modifier="1"/>
diff --git a/src/kernel/xmlreader.c b/src/kernel/xmlreader.c
index a9d3879..423f166 100644
--- a/src/kernel/xmlreader.c
+++ b/src/kernel/xmlreader.c
@@ -1320,6 +1320,12 @@ static void parse_ai(race * rc, xmlNodePtr node)
         rc->flags |= RCF_ATTACK_MOVED;
 }
 
+static void set_study_speed(race *rc, skill_t sk, int modifier){
+    if (!rc->study_speed)
+        rc->study_speed = calloc(1, MAXSKILLS);
+    rc->study_speed[sk] = (char)modifier;
+}
+
 static int parse_races(xmlDocPtr doc)
 {
     xmlXPathContextPtr xpath = xmlXPathNewContext(doc);
@@ -1338,6 +1344,7 @@ static int parse_races(xmlDocPtr doc)
         xmlXPathObjectPtr result;
         int k, study_speed_base, attacks;
         struct att *attack;
+        skill_t sk;
 
         propValue = xmlGetProp(node, BAD_CAST "name");
         assert(propValue != NULL);
@@ -1467,11 +1474,15 @@ static int parse_races(xmlDocPtr doc)
         xpath->node = node;
         result = xmlXPathEvalExpression(BAD_CAST "skill", xpath);
         memset(rc->bonus, 0, sizeof(rc->bonus));
+        if (study_speed_base != 0) {
+          for (sk = 0; sk < MAXSKILLS; ++sk) {
+            set_study_speed(rc, sk, study_speed_base);
+          }
+        }
         for (k = 0; k != result->nodesetval->nodeNr; ++k) {
             xmlNodePtr node = result->nodesetval->nodeTab[k];
             int mod = xml_ivalue(node, "modifier", 0);
             int speed = xml_ivalue(node, "speed", study_speed_base);
-            skill_t sk;
 
             propValue = xmlGetProp(node, BAD_CAST "name");
             assert(propValue != NULL);
@@ -1479,9 +1490,7 @@ static int parse_races(xmlDocPtr doc)
             if (sk != NOSKILL) {
                 rc->bonus[sk] = (char)mod;
                 if (speed) {
-                    if (!rc->study_speed)
-                        rc->study_speed = calloc(1, MAXSKILLS);
-                    rc->study_speed[sk] = (char)speed;
+                    set_study_speed(rc, sk, speed);
                 }
             }
             else {
