rem: if (bvw->priv->video_fps - (int)bvw->priv->video_fps >= 0.5) integer = bvw->priv->video_fps + 1;
add: if (bvw->priv->video_fps_d > 0) {  integer = (bvw->priv->video_fps_n + bvw->priv->video_fps_d/2) / bvw->priv->video_fps_d; }
context: bacon_video_widget_get_metadata_int (BaconVideoWidget * bvw,				     BaconVideoWidgetMetadataType type,				     GValue * value){  int integer = 0;  g_value_init (value, G_TYPE_INT);  if (bvw->priv->play == NULL)    {      g_value_set_int (value, 0);      return;    }  switch (type)    {    case BVW_INFO_DURATION:      integer = bacon_video_widget_get_stream_length (bvw) / 1000;      break;    case BVW_INFO_TRACK_NUMBER:      if (!gst_tag_list_get_uint (bvw->priv->tagcache,				  GST_TAG_TRACK_NUMBER, (guint *) &integer))        integer = 0;      break;    case BVW_INFO_DIMENSION_X:      integer = bvw->priv->video_width;      break;    case BVW_INFO_DIMENSION_Y:      integer = bvw->priv->video_height;      break;    case BVW_INFO_FPS:      if (bvw->priv->video_fps - (int)bvw->priv->video_fps >= 0.5)        integer = bvw->priv->video_fps + 1;      else        integer = bvw->priv->video_fps;      break;    case BVW_INFO_AUDIO_BITRATE:      if (bvw->priv->audiotags == NULL)        break;      if (gst_tag_list_get_uint (bvw->priv->audiotags,				 GST_TAG_BITRATE, (guint *)&integer)) {	integer /= 1000;      }      break;    case BVW_INFO_VIDEO_BITRATE:      if (bvw->priv->videotags == NULL)	break;      if (gst_tag_list_get_uint (bvw->priv->videotags,				 GST_TAG_BITRATE, (guint *)&integer)) {	integer /= 1000;      }      break;    default:      g_assert_not_reached ();    }  g_value_set_int (value, integer);  return;}