diff --git a/airtime_mvc/application/controllers/PlaylistController.php b/airtime_mvc/application/controllers/PlaylistController.php
index 66c3d665b..b2b8c25ad 100644
--- a/airtime_mvc/application/controllers/PlaylistController.php
+++ b/airtime_mvc/application/controllers/PlaylistController.php
@@ -163,23 +163,24 @@ class PlaylistController extends Zend_Controller_Action
     public function moveItemAction()
     {
         $oldPos = $this->_getParam('oldPos');
-		$newPos = $this->_getParam('newPos');
-
-		$pl = $this->getPlaylist();
+	$newPos = $this->_getParam('newPos');
+	
+	
+	$pl = $this->getPlaylist();
         if($pl === false){
             $this->view->playlist_error = true;
             return false;
         }
 
-		$pl->moveAudioClip($oldPos, $newPos);
+	$pl->moveAudioClip($oldPos, $newPos);
 
-		$this->view->pl = $pl;
-		$this->view->html = $this->view->render('playlist/update.phtml');
-		$this->view->name = $pl->getName();
-		$this->view->length = $pl->getLength();
+	$this->view->pl = $pl;
+	$this->view->html = $this->view->render('playlist/update.phtml');
+	$this->view->name = $pl->getName();
+	$this->view->length = $pl->getLength();
         $this->view->description = $pl->getDescription();
 
-		unset($this->view->pl);
+	unset($this->view->pl);
     }
 
     public function deleteItemAction()
@@ -294,19 +295,19 @@ class PlaylistController extends Zend_Controller_Action
 
     public function setFadeAction()
     {
-		$pos = $this->_getParam('pos');
-		$pl = $this->getPlaylist();
+	$pos = $this->_getParam('pos');
+	$pl = $this->getPlaylist();
+	
         if($pl === false){
             $this->view->playlist_error = true;
             return false;
         }
 
-		$fadeIn = $this->_getParam('fadeIn', null);
-		$fadeOut = $this->_getParam('fadeOut', null);
-
-		$response = $pl->changeFadeInfo($pos, $fadeIn, $fadeOut);
-
-		$this->view->response = $response;
+        $fadeIn = $this->_getParam('fadeIn', null);
+        $fadeOut = $this->_getParam('fadeOut', null);
+		
+        $response = $pl->changeFadeInfo($pos, $fadeIn, $fadeOut);
+        $this->view->response = $response;
 
         if(!isset($response["error"])) {
             $this->view->pl = $pl;
@@ -369,33 +370,39 @@ class PlaylistController extends Zend_Controller_Action
 		$this->view->html = $this->view->render('playlist/index.phtml');
     }
 
+    /**
+     * The playlist fades are stored in the elements themselves.
+     * The fade in is set to the first elements fade in and
+     * the fade out is set to the last elments fade out.
+     **/
     public function setPlaylistFadesAction()
     {
         $request = $this->getRequest();
-		$pl = $this->getPlaylist();
+	$pl = $this->getPlaylist();
         if($pl === false){
             $this->view->playlist_error = true;
             return false;
         }
 
-		if($request->isPost()) {
-			$fadeIn = $this->_getParam('fadeIn', null);
-			$fadeOut = $this->_getParam('fadeOut', null);
+	if($request->isPost()) {
+	    $fadeIn = $this->_getParam('fadeIn', null);
+	    $fadeOut = $this->_getParam('fadeOut', null);
 
             if($fadeIn)
-			    $response = $pl->changeFadeInfo(0, $fadeIn, $fadeOut);
+		$response = $pl->changeFadeInfo(0, $fadeIn, $fadeOut);
             else if($fadeOut)
                  $response = $pl->changeFadeInfo($pl->getSize(), $fadeIn, $fadeOut);
 
-			$this->view->response = $response;
-			return;
-		}
+	    $this->view->response = $response;   
 
-		$fades = $pl->getFadeInfo(0);
-		$this->view->fadeIn = $fades[0];
+	    return;
+	}
 
-		$fades = $pl->getFadeInfo($pl->getSize());
-		$this->view->fadeOut = $fades[1];
+	$fades = $pl->getFadeInfo(0);
+	$this->view->fadeIn = $fades[0];
+
+	$fades = $pl->getFadeInfo($pl->getSize());
+	$this->view->fadeOut = $fades[1];
     }
 
     public function setPlaylistNameAction()
diff --git a/airtime_mvc/application/models/Playlist.php b/airtime_mvc/application/models/Playlist.php
index 3c7501dd1..11e6312b0 100644
--- a/airtime_mvc/application/models/Playlist.php
+++ b/airtime_mvc/application/models/Playlist.php
@@ -219,7 +219,6 @@ class Application_Model_Playlist {
 
     	if($pl === NULL)
     	    return FALSE;
-
     	$pl->setDbDescription($p_description);
     	$pl->setDbMtime(new DateTime("now"), new DateTimeZone("UTC"));
     	$pl->save();
@@ -428,18 +427,20 @@ class Application_Model_Playlist {
     * will normalize the fade so that it looks like 00.000000 to the user.
     **/
     public function normalizeFade($fade) {
-          //First get rid of the first six characters 00:00: which will be added back later for db update
-          $fade = substr($fade, 6);
+      
+      //First get rid of the first six characters 00:00: which will be added back later for db update
+      $fade = substr($fade, 6);
 
-          //Second add .000000 if the fade does't have milliseconds format already
-          $dbFadeStrPos = strpos( $fade, '.' );
-          if ( $dbFadeStrPos === False )
-             $fade .= '.000000';
-          else
-             while( strlen( $fade ) < 9 )
-                 $fade .= '0';
-          //done, just need to set back the formated values
-          return $fade;
+      //Second add .000000 if the fade does't have milliseconds format already
+      $dbFadeStrPos = strpos( $fade, '.' );
+      if ( $dbFadeStrPos === False )
+         $fade .= '.000000';
+      else
+         while( strlen( $fade ) < 9 )
+            $fade .= '0';
+      
+      //done, just need to set back the formated values
+      return $fade;
     }
 
     public function getLength() {
@@ -610,7 +611,7 @@ class Application_Model_Playlist {
      */
     public function moveAudioClip($oldPos, $newPos)
     {
-        if($newPos < 0 || $newPos >= $this->getNextPos() || $oldPos < 0 || $oldPos >= $this->getNextPos())
+        if($newPos < 0 || $newPos >= $this->getNextPos() || $oldPos < 0 || $oldPos >= $this->getNextPos() || $oldPos === $newPos)
             return FALSE;
 
         $row = $this->delAudioClip($oldPos);
@@ -630,21 +631,17 @@ class Application_Model_Playlist {
 
 	public function getFadeInfo($pos) {
 
-		$row = CcPlaylistcontentsQuery::create()
+	  $row = CcPlaylistcontentsQuery::create()
             ->joinWith(CcFilesPeer::OM_CLASS)
             ->filterByDbPlaylistId($this->id)
             ->filterByDbPosition($pos)
             ->findOne();
 
-        $fadeIn = $row->getDbFadein();
-        $fadeOut = $row->getDbFadeout();
-
             #For issue CC-2065, fade in and out values are for the Playlist itself and must be
             #modified from the db default format of 00:00:00 to the more practical
             #00.000000 format which is for only seconds.
-            $fadeIn = $this->normalizeFade($fadeIn);
-            $fadeOut = $this->normalizeFade($fadeOut);
-
+            $fadeIn = $this->normalizeFade($row->getDbFadein());
+            $fadeOut = $this->normalizeFade($row->getDbFadeout());
             return array($fadeIn, $fadeOut);
 	}
 
@@ -661,9 +658,11 @@ class Application_Model_Playlist {
      */
     public function changeFadeInfo($pos, $fadeIn, $fadeOut)
     {
-        #See issue CC-2065, pad the fadeIn and fadeOut so that it is TIME compatable with the DB schema
-        $fadeIn = '00:00:'.$fadeIn;
-        $fadeOut = '00:00:'.$fadeOut;
+        //See issue CC-2065, pad the fadeIn and fadeOut so that it is TIME compatable with the DB schema
+        //For the top level PlayList either fadeIn or fadeOut will sometimes be Null so need a gaurd against
+	//setting it to nonNull for checks down below
+        $fadeIn = $fadeIn?'00:00:'.$fadeIn:$fadeIn;
+        $fadeOut = $fadeOut?'00:00:'.$fadeOut:$fadeOut;
 
         $errArray= array();
 		$con = Propel::getConnection(CcPlaylistPeer::DATABASE_NAME);