diff --git a/extlib/litl/src/litl_read.h b/extlib/litl/src/litl_read.h
index f24aae8..6a72b68 100644
--- a/extlib/litl/src/litl_read.h
+++ b/extlib/litl/src/litl_read.h
@@ -124,15 +124,16 @@ void litl_read_finalize_trace(litl_read_trace_t* trace);
  * For internal use only
  * Initializes a pointer for browsing the parameters of an event
  */
-#define __LITL_READ_INIT_PTR(evt, _ptr_)		\
-  do {							\
-    if(LITL_READ_GET_TYPE(evt) == LITL_TYPE_REGULAR)	\
-      _ptr_ = &LITL_READ_REGULAR(evt)->param[0];	\
-    else						\
-      _ptr_ = &LITL_READ_PACKED(evt)->param[0];		\
+#define __LITL_READ_INIT_PTR(evt, _ptr_)			\
+  do {								\
+    if(LITL_READ_GET_TYPE(evt) == LITL_TYPE_REGULAR)		\
+      _ptr_ = &LITL_READ_REGULAR(evt)->param[0];		\
+    else if(LITL_READ_GET_TYPE(evt) == LITL_TYPE_PACKED)	\
+      _ptr_ = &(LITL_READ_PACKED(evt))->param[0];	\
   } while(0)
 
-#if DEBUG
+//#if DEBUG
+#if 1
 #define __LITL_CHECK_EVENT_SIZE(evt, _ptr_)				\
   do{									\
     void* base_ptr;							\
@@ -331,7 +332,7 @@ void litl_read_finalize_trace(litl_read_trace_t* trace);
     __LITL_READ_GET_ARG(p_evt, _ptr_, param2);			        \
     __LITL_READ_GET_ARG(p_evt, _ptr_, param3);			        \
     __LITL_READ_GET_ARG(p_evt, _ptr_, param4);			        \
-    __LITL_CHECK_EVENT_SIZE(p_evt, _ptr_);	\
+    __LITL_CHECK_EVENT_SIZE(p_evt, _ptr_);				\
   } while(0)
 
 /**
diff --git a/extlib/litl/src/litl_tools.c b/extlib/litl/src/litl_tools.c
index eecc1ae..acefc2c 100644
--- a/extlib/litl/src/litl_tools.c
+++ b/extlib/litl/src/litl_tools.c
@@ -15,26 +15,40 @@
  * Returns the size in bytes of a REGULAR event depending on
  *   the number of arguments
  */
-litl_med_size_t __litl_get_reg_event_size(litl_data_t nb_params) {
-  return nb_params * sizeof(litl_param_t)
-    + (litl_med_size_t) ceil(LITL_BASE_SIZE / (double) sizeof(litl_param_t))
-      * sizeof(litl_param_t);
+litl_size_t __litl_get_reg_event_size(litl_data_t nb_params) {
+  return LITL_BASE_SIZE + (nb_params * sizeof(litl_param_t)) + sizeof(litl_data_t);
+}
+
+litl_size_t __litl_get_event_size(litl_type_t type, int param_size) {
+  switch (type) {
+  case LITL_TYPE_REGULAR:
+    return LITL_BASE_SIZE + (param_size * sizeof(litl_param_t)) + sizeof(litl_data_t);
+  case LITL_TYPE_RAW:
+    return LITL_BASE_SIZE + param_size + sizeof(((litl_t*)0)->parameters.raw.size);
+  case LITL_TYPE_PACKED:
+    return LITL_BASE_SIZE + param_size + sizeof(((litl_t*)0)->parameters.packed.size);
+  case LITL_TYPE_OFFSET:
+    return LITL_BASE_SIZE + param_size + sizeof(((litl_t*)0)->parameters.offset.nb_params);
+  default:
+    fprintf(stderr, "Unknown event type %d!\n", type);
+    abort();
+  }
+  return 0;
 }
 
 /*
  * Returns the size in bytes of an event of any type
  */
-litl_med_size_t __litl_get_gen_event_size(litl_t *p_evt) {
+litl_size_t __litl_get_gen_event_size(litl_t *p_evt) {
   switch (p_evt->type) {
   case LITL_TYPE_REGULAR:
-    return p_evt->parameters.regular.nb_params * sizeof(litl_param_t)
-      + LITL_BASE_SIZE ;
+    return __litl_get_event_size(p_evt->type, p_evt->parameters.regular.nb_params);
   case LITL_TYPE_RAW:
-    return p_evt->parameters.raw.size + LITL_BASE_SIZE + 1;
+    return __litl_get_event_size(p_evt->type, p_evt->parameters.raw.size);
   case LITL_TYPE_PACKED:
-    return p_evt->parameters.packed.size + LITL_BASE_SIZE ;
+    return __litl_get_event_size(p_evt->type, p_evt->parameters.packed.size);
   case LITL_TYPE_OFFSET:
-    return p_evt->parameters.offset.nb_params + LITL_BASE_SIZE ;
+    return __litl_get_event_size(p_evt->type, p_evt->parameters.offset.nb_params);
   default:
     fprintf(stderr, "Unknown event type %d!\n", p_evt->type);
     abort();
diff --git a/extlib/litl/src/litl_tools.h b/extlib/litl/src/litl_tools.h
index fcaf318..ca07341 100644
--- a/extlib/litl/src/litl_tools.h
+++ b/extlib/litl/src/litl_tools.h
@@ -31,7 +31,18 @@
  * \param nb_params A number of event's parameters
  * \return A size of a regular event
  */
-litl_med_size_t __litl_get_reg_event_size(litl_data_t nb_params);
+litl_size_t __litl_get_reg_event_size(litl_data_t nb_params);
+
+/**
+ * \ingroup litl_tools
+ * \brief Returns the size of an event (in Bytes) depending on the number or size
+ * of its parameters
+ * \param type The type of event
+ * \param nb_params The number or size of parameters
+ * \return A size of a regular event
+ */
+litl_size_t __litl_get_event_size(litl_type_t type, int param_size);
+
 
 /**
  * \ingroup litl_tools
@@ -40,6 +51,6 @@ litl_med_size_t __litl_get_reg_event_size(litl_data_t nb_params);
  * \param p_evt A pointer to an event
  * \return A size of a given event
  */
-litl_med_size_t __litl_get_gen_event_size(litl_t *p_evt);
+litl_size_t __litl_get_gen_event_size(litl_t *p_evt);
 
 #endif /* LITL_TOOLS_H_ */
diff --git a/extlib/litl/src/litl_types.h b/extlib/litl/src/litl_types.h
index 4dbef3f..cfee35b 100644
--- a/extlib/litl/src/litl_types.h
+++ b/extlib/litl/src/litl_types.h
@@ -209,7 +209,7 @@ typedef struct {
      * \brief A raw event
      */
     struct {
-      litl_data_t size; /**< A size of data (in Bytes) */
+      litl_size_t size; /**< A size of data (in Bytes) */
       litl_data_t data[LITL_MAX_DATA]; /**< A raw data */
     }__attribute__((packed)) raw;
     /**
@@ -454,6 +454,6 @@ typedef struct {
  * For internal use only.
  * Computes the offset of the first parameter in an event
  */
-#define LITL_BASE_SIZE __litl_offset_of(litl_t, parameters.regular.param)
+#define LITL_BASE_SIZE __litl_offset_of(litl_t, parameters)
 
 #endif /* LITL_TYPES_H_ */
diff --git a/extlib/litl/src/litl_write.c b/extlib/litl/src/litl_write.c
index ed45f8d..72177c5 100644
--- a/extlib/litl/src/litl_write.c
+++ b/extlib/litl/src/litl_write.c
@@ -553,7 +553,8 @@ litl_t* __litl_write_get_event(litl_write_trace_t* trace, litl_type_t type,
 			       litl_code_t code, int param_size) {
   litl_med_size_t index = 0;
   litl_t*retval = NULL;
-  litl_size_t event_size = LITL_BASE_SIZE + param_size;
+  //  litl_size_t event_size = LITL_BASE_SIZE + param_size;
+  litl_size_t event_size = __litl_get_event_size(type, param_size);
 
   if (trace && trace->is_litl_initialized && !trace->is_recording_paused
     && !trace->is_buffer_full) {
