diff --git a/controllers/copy.php b/controllers/copy.php
index 804e6b8efab18e36eec2c49b9c135a0eb9d4ac94..dd966a7f99bfff28efe00570b1b0c63169834772 100755
--- a/controllers/copy.php
+++ b/controllers/copy.php
@@ -25,7 +25,7 @@ class CopyController extends PluginController
             }
             if (count(Request::getArray("c")) == 1) {
                 $this->single_course = Course::find(current(Request::getArray("c")));
-                $this->single_course_name = $course->name;
+                $this->single_course_name = $this->single_course;
             }
         } else {
             throw new Trails_Exception(400);
@@ -97,6 +97,7 @@ class CopyController extends PluginController
                         $newcourse['mkdate'] = time();
                         $newcourse->setId($newcourse->getNewId());
                         $newcourse['start_time'] = $semester['beginn'];
+                        $newcourse['duration_time'] = 0;
                         if ($invisible_copied_courses) {
                             $newcourse['visible'] = 0;
                         }
@@ -222,6 +223,7 @@ class CopyController extends PluginController
 
 
                         if (Request::get("cycles")) {
+                            $last_week = count($semester->getStartWeeks()) - 1;
                             foreach ($oldcourse->cycles as $cycledate) {
 
                                 $statement = DBManager::get()->prepare("
@@ -242,10 +244,8 @@ class CopyController extends PluginController
                                 $newcycle->setData($cycledate->toArray());
                                 $newcycle->setId($newcycle->getNewId());
                                 $newcycle['seminar_id'] = $newcourse->getId();
-                                $newcycle['week_offset'] = Request::get("week_offset");
-                                $newcycle['end_offset'] = Request::get("end_offset") !== 10000
-                                    ? Request::get("end_offset")
-                                    : floor(($semester['vorles_ende'] - $semester['vorles_beginn']) / (86400 * 7));
+                                $newcycle['week_offset'] = Request::int("week_offset");
+                                $newcycle['end_offset'] = Request::get('end_offset') == 'last' ? $last_week : Request::int("end_offset");
                                 $newcycle['mkdate'] = time();
                                 $newcycle['chdate'] = time();
                                 $newcycle->store();
diff --git a/plugin.manifest b/plugin.manifest
index ca81a4628888ee70285243c3d68e48e1589a9c12..024778581085fac7ae1cdbf86829faa062d5c42c 100755
--- a/plugin.manifest
+++ b/plugin.manifest
@@ -1,6 +1,6 @@
 pluginname=CourseCopy
 pluginclassname=CourseCopy
-version=1.9.3
+version=1.9.4
 origin=data-quest
 studipMinVersion=4.0
 studipMaxVersion=5.3.99
diff --git a/views/copy/semester_start_und_ende.php b/views/copy/semester_start_und_ende.php
index fbceb897c7b0dcdf315034b6d3fc9acacdf174ed..22a78a73ceb3e107776e830fd36b651c2592483c 100755
--- a/views/copy/semester_start_und_ende.php
+++ b/views/copy/semester_start_und_ende.php
@@ -1,36 +1,31 @@
+<?php
+$start_weeks = $semester->getStartWeeks();
+$last_week = count($start_weeks) - 1;
+?>
 <label>
     <?= _("Startwoche") ?>
     <select name="week_offset">
-        <? $i = 0 ?>
-        <? while ($semester['vorles_beginn'] + 43200 + 86400 * 7 * $i < $semester['vorles_ende']) : ?>
+        <? foreach ($start_weeks as $i => $text) : ?>
             <option value="<?= $i ?>"<?= UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_WEEK_OFFSET == $i ? " checked" : "" ?>>
-                <?
-                $timestamp = $semester['vorles_beginn'] + 43200 + 86400 * 7 * $i;
-                $timestamp = $timestamp - ((date("w", $timestamp) - 1) % 7) * 86400;
-                ?>
-                <?= sprintf(_("%s. Semesterwoche (ab %s)"), $i + 1, date("d.m.Y", $timestamp)) ?>
+                <?= $text?>
             </option>
-            <? $i++ ?>
-        <? endwhile ?>
+        <? endforeach; ?>
     </select>
 </label>
 
 <label>
     <?= _("Endwoche") ?>
     <select name="end_offset">
-        <option value="10000"<?= UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_END_OFFSET == 10000 ? " checked" : "" ?>>
-            <?= _("Letzte Semesterwoche") ?>
-        </option>
-        <? $i = floor(($semester['vorles_ende'] - $semester['vorles_beginn']) / (86400 * 7)) - 1 ?>
-        <? while ($i >= 0) : ?>
-            <option value="<?= $i ?>"<?= UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_END_OFFSET == $i ? " checked" : "" ?>>
-                <?
-                $timestamp = $semester['vorles_beginn'] + 43200 + 86400 * 7 * $i;
-                $timestamp = $timestamp - ((date("w", $timestamp) - 1) % 7) * 86400;
-                ?>
-                <?= sprintf(_("%s. Semesterwoche (ab %s)"), $i + 1, date("d.m.Y", $timestamp)) ?>
+        <? foreach (array_reverse($start_weeks, true) as $i => $text) : ?>
+        <? if ($i == $last_week) : ?>
+            <option value="last">
+                <?= _('Semesterende: ') . $text?>
             </option>
-            <? $i-- ?>
-        <? endwhile ?>
+        <? else : ?>
+        <option value="<?= $i ?>"<?= UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_END_OFFSET == $i ? " checked" : "" ?>>
+            <?= $text?>
+        </option>
+        <? endif ?>
+        <? endforeach ?>
     </select>
 </label>