diff --git a/src/core/entities/duration.ts b/src/core/entities/duration.ts
index b0f8b4c..54e90ea 100644
--- a/src/core/entities/duration.ts
+++ b/src/core/entities/duration.ts
@@ -1,7 +1,7 @@
 import {TimeHelper} from "./time-helper";
 
 export class Duration {
-    constructor(private duration: number = -1) {
+    constructor(private duration: number = 0) {
     }
 
     private static isDuration(duration: Duration | number): duration is Duration {
@@ -9,10 +9,6 @@ export class Duration {
     }
 
     get value(): number {
-        if (this.duration < 0) {
-            return Math.floor(Date.now() / 1000) + this.duration;
-        }
-
         return this.duration;
     }
 
diff --git a/src/infrastructure/repositories/time-entry.repository.implementation.ts b/src/infrastructure/repositories/time-entry.repository.implementation.ts
index 1475e23..0390339 100644
--- a/src/infrastructure/repositories/time-entry.repository.implementation.ts
+++ b/src/infrastructure/repositories/time-entry.repository.implementation.ts
@@ -8,10 +8,17 @@ export class TimeEntryRepositoryImplementation implements TimeEntryRepository {
     constructor(private readonly api: TogglApi, private readonly time = new TimeHelper()) {
     }
 
+    static calcDuration(entry: TogglTimeEntry): number {
+        const start = new Date(entry.start!)
+        const stop = entry.stop ? new Date(entry.stop) : new Date()
+        const duration = stop.getTime() - start.getTime()
+        return Math.floor(duration / 1000)
+    }
+
     static mapToTimeEntry(entry: TogglTimeEntry, project: Nullable<Project>): TimeEntry {
         return new TimeEntry({
             description: entry.description,
-            duration: new Duration(entry.duration),
+            duration: entry.start && entry.stop ? new Duration(entry.duration) : new Duration(TimeEntryRepositoryImplementation.calcDuration(entry)),
             id: entry.id,
             project: project ? new Project(project.id, project.name) : new NullProject(),
         })
diff --git a/test/application/cases/continue-with-last-time-entry.case.test.ts b/test/application/cases/continue-with-last-time-entry.case.test.ts
index ed8e510..45baad6 100644
--- a/test/application/cases/continue-with-last-time-entry.case.test.ts
+++ b/test/application/cases/continue-with-last-time-entry.case.test.ts
@@ -27,7 +27,7 @@ describe('ContinueWithLastTimeEntryUseCase', () => {
 
   it('should continue with last time entry when there is a last entry', async () => {
     const lastEntry = buildTimeEntry({ description: "Test Description", duration: 60});
-    const newEntry = new TimeEntry({...lastEntry, duration: new Duration(-1)})
+    const newEntry = new TimeEntry({...lastEntry, duration: new Duration(0)})
     const continueTime = new Date();
     mockTimeEntryRepository.getLastEntry.returns(Promise.resolve(lastEntry));
     mockTimeEntryRepository.createEntry.returns(Promise.resolve(newEntry));
diff --git a/test/builders/toggl-time-entry.builder.ts b/test/builders/toggl-time-entry.builder.ts
index e3bf78d..b92972a 100644
--- a/test/builders/toggl-time-entry.builder.ts
+++ b/test/builders/toggl-time-entry.builder.ts
@@ -2,10 +2,15 @@
 import {TogglTimeEntry} from "../../src/infrastructure/types";
 
 export function buildTogglTimeEntry(params = {} as Partial<TogglTimeEntry>): TogglTimeEntry {
+    const duration = params.duration ?? 1800
+    const start = new Date(Date.now() - (duration * 1000))
+    const stop = new Date()
     return {
         description: params.description ?? "Dummy time entry",
-        duration: params.duration ?? 1800,
+        duration,
         id: params.id ?? Math.floor(Math.random() * 10**16),
-        project_id: params.project_id ?? Math.floor(Math.random() * 10**16)
+        project_id: params.project_id ?? Math.floor(Math.random() * 10**16),
+        start: start.toISOString(),
+        stop: stop.toISOString()
     }
 }
diff --git a/test/core/duration.test.ts b/test/core/duration.test.ts
index 75f3778..da970d7 100644
--- a/test/core/duration.test.ts
+++ b/test/core/duration.test.ts
@@ -5,7 +5,7 @@ import {Duration} from "../../src/core";
 describe('Duration', () => {
     it('should initialize with the default duration if no value is provided', () => {
         const duration = new Duration();
-        expect(duration.value).to.be.closeTo(Date.now() / 1000, 2);
+        expect(duration.value).to.be.equal(0);
     });
 
     it('should initialize with the provided value', () => {
@@ -40,9 +40,4 @@ describe('Duration', () => {
         expect(duration.toString()).to.equal('01h 01m 01s');
     });
 
-    it('should handle negative durations correctly', () => {
-        const duration = new Duration(-100);
-        expect(duration.value).to.be.closeTo(Date.now() / 1000, 101);
-    });
-
 });
diff --git a/test/core/time-entry.test.ts b/test/core/time-entry.test.ts
index 6633885..7d01c82 100644
--- a/test/core/time-entry.test.ts
+++ b/test/core/time-entry.test.ts
@@ -17,11 +17,6 @@ describe('TimeEntry', () => {
 
   it('should return the correct string representation', () => {
     const timeEntry = new TimeEntry({description: "Prueba de descripciĆ³n", duration: new Duration(3600), id: 1, project})
-    let expectedStr = `01h 00m 00s - ${timeEntry.description} (${project.name})`;
-    expect(timeEntry.toString()).to.equal(expectedStr);
-
-    timeEntry.duration.value = (Math.floor(Date.now() / 1000) - 3665) * -1;
-    expectedStr = `01h 01m 05s - ${timeEntry.description} (${project.name})`;
-    expect(timeEntry.toString()).to.equal(expectedStr);
+    expect(timeEntry.toString()).to.equal(`01h 00m 00s - ${timeEntry.description} (${project.name})`);
   });
 });
diff --git a/test/infrastructure/repositories/time-entry.repository.implementation.test.ts b/test/infrastructure/repositories/time-entry.repository.implementation.test.ts
index 5f83069..97372be 100644
--- a/test/infrastructure/repositories/time-entry.repository.implementation.test.ts
+++ b/test/infrastructure/repositories/time-entry.repository.implementation.test.ts
@@ -29,7 +29,12 @@ describe('TimeEntryRepositoryImplementation', () => {
         const result = await repository.createEntry(entry, date);
 
         expect(result).to.be.deep.equal(entry);
-        sinon.assert.calledOnceWithExactly(apiMock.createTimeEntry, mockTogglEntry, date);
+        sinon.assert.calledOnceWithExactly(apiMock.createTimeEntry, {
+            description: mockTogglEntry.description,
+            duration: mockTogglEntry.duration,
+            id: mockTogglEntry.id,
+            project_id: mockTogglEntry.project_id
+        }, date);
     });
 
     it('should retrieve the current time entry when it exists', async () => {