diff --git a/allocate.c b/allocate.c
index 6ad9bb75187e3eea1388c84f03640bcd8b75ff32..f03d0e35437cb323b706b5e0c5d0fbc5d1d58165 100644
--- a/allocate.c
+++ b/allocate.c
@@ -73,7 +73,6 @@ int main(int argc, char *argv[]) {
     float averageTurnaroundTime = 0;
     llist *completedProcesses, paralellizedProcesses, arrivalLounge;
     completedProcesses = llist_create(NULL);// is making list
-    //headNULL(completedProcesses);
     paralellizedProcesses = llist_create(NULL);
 
 
@@ -169,7 +168,7 @@ int main(int argc, char *argv[]) {
                     parableProcess[i].parallelisable = newProcess->parallelisable;
                     parableProcess[i].timeCompleted = -1;
                     parableProcess[i].timeRemaining = parableProcess[i].executionTime;
-                    parableProcess[i].timeRemAtStartTime = newProcess->timeRemAtStartTime;
+                    parableProcess[i].timeRemAtStartTime = parableProcess[i].executionTime;
                     addProcessToQueue(CPUs[i].processQueue, &parableProcess[i], currentTime, i);
                     CPUs[i].totalExecutionTimeRemaining += newProcess->executionTime;
                 }
@@ -186,7 +185,7 @@ int main(int argc, char *argv[]) {
             while ( currNode ){
                 if ( currProc!= NULL &&  currProc->timeCompleted <= currentTime   && !currProc->finished) {
                     printf("%d,FINISHED,pid=%s,proc_remaining=%d\n",
-                           currProc->timeCompleted, currProc->processID, numProcessesLeft);
+                           currProc->timeCompleted, currProc->processID, numProcessesLeft-1);
                     currProc->finished = -1;
                 }
                 currNode = currNode->next;
@@ -212,7 +211,7 @@ int main(int argc, char *argv[]) {
     }
 
     //  No more processes to be read in, just need to finish the ones in the queues
-    //printf("No more processes to be read in\n");
+
     int tr;
     while (numProcessesLeft) {
         //  find how big the next time step is - its the smallest of the times remaining on each queue's head process
@@ -226,6 +225,7 @@ int main(int argc, char *argv[]) {
                 }
             }
         }
+
         currentTime += deltaTime;
         // update time CPU totalExecutionTimeRemaining and advance processes
         for (int j = 0; j < numCPU; j++) {
@@ -243,7 +243,7 @@ int main(int argc, char *argv[]) {
         headData(completedProcesses);
         process * currProc = currNode->data;
         while ( currNode ){
-            if ( currProc!= NULL &&  currProc->timeCompleted >= currentTime  && currProc->finished ) {
+            if ( currProc!= NULL &&  currProc->timeCompleted >= currentTime   ) {//&& currProc->finished
                 printf("%d,FINISHED,pid=%s,proc_remaining=%d\n",
                        currProc->timeCompleted, currProc->processID, numProcessesLeft);
                 currProc->finished = -1;
@@ -382,7 +382,10 @@ process *parallelParent(llist *q, char *parentPid) {
     process *p;
 
     if (curr) p = curr->data;
-    while (curr && !strncmp(p->processID, parentPid, strlen(parentPid))) {
+    int pid = atoi(p->processID);
+    int intparentPid = atoi(parentPid);
+
+    while (curr && pid!=intparentPid ) { //!strncmp(p->processID, parentPid, strlen(parentPid))
         curr = curr->next;
         p = curr->data;
     }