Mmsg(&mdb->cmd, "SELECT MediaId,VolumeName,VolJobs,VolFiles,VolBlocks,"
           "VolBytes,VolMounts,VolErrors,VolWrites,MaxVolBytes,VolCapacityBytes,"
           "VolRetention,VolUseDuration,MaxVolJobs,MaxVolFiles,Recycle,Slot,"
-          "FirstWritten,COALESCE(LastWritten,0),VolStatus "
+          "FirstWritten,LastWritten,VolStatus "
           "FROM Media WHERE PoolId=%u AND MediaType='%s' AND VolStatus IN ('Full',"
           "'Recycle','Purged','Used','Append') "
           "ORDER BY LastWritten LIMIT 1", mr->PoolId, mr->MediaType); 
           strcmp(mr->VolStatus, "Purged") == 0) {
          order = "ORDER BY LastWritten ASC,MediaId";  /* take oldest */
       } else {
-         order = "ORDER BY LastWritten DESC,MediaId";   /* take most recently written */
+         order = "ORDER BY LastWritten IS NULL,LastWritten DESC,MediaId";   /* take most recently written */
       }  
       Mmsg(&mdb->cmd, "SELECT MediaId,VolumeName,VolJobs,VolFiles,VolBlocks,"
           "VolBytes,VolMounts,VolErrors,VolWrites,MaxVolBytes,VolCapacityBytes,"
           "VolRetention,VolUseDuration,MaxVolJobs,MaxVolFiles,Recycle,Slot,"
-          "FirstWritten,COALESCE(LastWritten,0),VolStatus "
+          "FirstWritten,LastWritten,VolStatus "
           "FROM Media WHERE PoolId=%u AND MediaType='%s' AND VolStatus='%s' "
           "%s " 
           "%s LIMIT 1",
    mr->Slot = str_to_int64(row[16]);
    bstrncpy(mr->cFirstWritten, row[17]!=NULL?row[17]:"", sizeof(mr->cFirstWritten));
    mr->FirstWritten = (time_t)str_to_utime(mr->cFirstWritten);
-   /* LastWritten cannot be NULL because of COALESCE() in SQL */
-   bstrncpy(mr->cLastWritten, row[18], sizeof(mr->cLastWritten));
+   bstrncpy(mr->cLastWritten, row[18]!=NULL?row[18]:"", sizeof(mr->cLastWritten));
    mr->LastWritten = (time_t)str_to_utime(mr->cLastWritten);
    bstrncpy(mr->VolStatus, row[19], sizeof(mr->VolStatus));
    sql_free_result(mdb);